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

rka*_*yan 8 php mysql laravel eloquent laravel-4

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

SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"
Run Code Online (Sandbox Code Playgroud)

我试过以下

CategoryModel::where('catType', '=', 'Root')
                ->lists('catName', 'catID', 'imgPath');
Run Code Online (Sandbox Code Playgroud)

但它只返回两个字段.

Array ( [7] => Category 1 )
Run Code Online (Sandbox Code Playgroud)

luk*_*ter 23

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

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

  • 有人有文档页面的链接吗?我找不到他们。具体来说,我想更好地理解 `select()` 函数。 (2认同)

Har*_*osh 6

选择多列

CategoryModel::get(['catName', 'catID', 'imgPath']);
Run Code Online (Sandbox Code Playgroud)

也适用于 Laravel 5.3!


Har*_*hil 5

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

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

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

CategoryModel::all('catName', 'catID', 'imgPath')->where('catType','Root');
Run Code Online (Sandbox Code Playgroud)

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

CategoryModel::all(['catName', 'catID', 'imgPath'])->where('catType','Root');
Run Code Online (Sandbox Code Playgroud)

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

CategoryModel::get(['catName', 'catID', 'imgPath'])->where('catType','Root');
Run Code Online (Sandbox Code Playgroud)