如何在 Laravel Eloquent 中选择某些字段?

Posted

技术标签:

【中文标题】如何在 Laravel Eloquent 中选择某些字段?【英文标题】:How to Select Certain Fields in Laravel Eloquent? 【发布时间】:2015-04-16 07:27:44 【问题描述】:

如何在 Laravel Eloquent 中进行以下查询?

SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"

我已尝试关注

CategoryModel::where('catType', '=', 'Root')
                ->lists('catName', 'catID', 'imgPath');

但它只返回两个字段。

Array ( [7] => Category 1 )

【问题讨论】:

CategoryModel::select('catName', 'catID', 'imgPath')->where('catType', '=', 'Root')->get() 会更好吗? 【参考方案1】:

lists() 将生成的集合转换为具有键值的数组。那里只能有两个数据库列。否则你必须使用select(),但是你会得到一个模型的集合而不仅仅是一个数组。

$categories = CategoryModel::select('catID', 'catName', 'imgPath')
                           ->where('catType', '=', 'Root')
                           ->get();

【讨论】:

有人有文档页面的链接吗?我找不到他们。具体来说,我想更好地理解select()函数。【参考方案2】:
CategoryModel::wherecatType('Root')
            ->pluck('catName', 'catID', 'imgPath');

【讨论】:

【参考方案3】:

选择多列

CategoryModel::get(['catName', 'catID', 'imgPath']);

也适用于 Laravel 5.3!

【讨论】:

【参考方案4】:

从 laravel 版本 5.3^ lists() 已弃用,而使用函数 pluck()

pluck() 返回一个集合,如果您需要一个简单的数组,只需将 ->toArray() 添加到它前面。

【讨论】:

【参考方案5】:

如果您想获取某些列,那么您可以使用两种方法之一get()all()

但两者的语法不同,get() 方法将array 作为参数all() 方法将stringarray 都作为参数

Model::all('field1','field2')string 作为参数

CategoryModel::all('catName', 'catID', 'imgPath')->where('catType','Root');

Model::all(['field1','field2'])array 作为参数

CategoryModel::all(['catName', 'catID', 'imgPath'])->where('catType','Root');

模型::get(['field1','field2'])

CategoryModel::get(['catName', 'catID', 'imgPath'])->where('catType','Root');

【讨论】:

感谢 all() 方法适用于(字符串和数组)laravel 6.x 版 @otosturop,感谢您的建议,我已经更新了答案。 @otosturop,我发现all 方法调用get 方法,但自laravel version 5.1 以来将arraystring 作为参数,所以来自laravel 5.1 stringarray 都可以在 all() 方法的参数中使用。

以上是关于如何在 Laravel Eloquent 中选择某些字段?的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel Eloquent 中,你如何在联合范围之外进行两个联合查询和一个选择?

如何在我的 Eloquent ORM laravel 选择中包含一个过程?

Laravel Eloquent:如何从多个表中进行选择

从Laravel和Eloquent的桌子中选择所有

Laravel - 使用 Eloquent 查询构建器在选择中添加自定义列

如何使用 laravel ORM eloquent 5.8 选择我数据库中每个促销活动的总下载量?