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

时间:2015-02-15 19:47:39

标签: php mysql laravel laravel-4 eloquent

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

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

我试过以下

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

但它只返回两个字段。

Array ( [7] => Category 1 )

5 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:2)

CategoryModel::wherecatType('Root')
            ->pluck('catName', 'catID', 'imgPath');

答案 2 :(得分:2)

选择多列

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

也适用于Laravel 5.3!

答案 3 :(得分:0)

从laravel版本5.3 ^ lists()不推荐使用,而是使用函数pluck()

pluck()会返回一个集合,如果您需要一个简单的数组,只需添加->toArray()

答案 4 :(得分:0)

如果要获取某些列,则可以使用两种方法之一get()all()

但是两者的语法都不同, get()方法以array作为参数,而 all()方法以string作为参数

型号:: all('field1','field2')

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

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

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