如何 Select Laravel Eloquent 中的某些字段?

How to Select Certain Fields in Laravel Eloquent?

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

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

我试过关注

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

但它 return 只有两个字段。

Array ( [7] => Category 1 )

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

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

选择多列

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

也适用于 Laravel 5.3!

从 laravel 5.3 版开始^ lists() 已弃用,改用函数 pluck()

pluck() returns 一个集合,如果您需要一个简单的数组,只需在其前面添加 ->toArray()

如果你想获得某些列,那么你可以使用两种方法之一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');

Model::get(['field1','field2'])

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