Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel Eloquent中选择某些字段?_Php_Mysql_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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

Php 如何在Laravel Eloquent中选择某些字段?,php,mysql,laravel,laravel-4,eloquent,Php,Mysql,Laravel,Laravel 4,Eloquent,如何在Laravel中进行以下查询 SELECT catID, catName, imgPath FROM categories WHERE catType = "Root" 我试过跟随 CategoryModel::where('catType', '=', 'Root') ->lists('catName', 'catID', 'imgPath'); 但它只返回两个字段 Array ( [7] => Category 1 ) lists()将

如何在Laravel中进行以下查询

SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"
我试过跟随

CategoryModel::where('catType', '=', 'Root')
                ->lists('catName', 'catID', 'imgPath');
但它只返回两个字段

Array ( [7] => Category 1 )
lists()
将生成的集合转换为具有键值的数组。其中只能有两个数据库列。否则,您必须使用
select()
,然后您将得到一组模型,而不仅仅是一个数组

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

选择多个列

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

也适用于Laravel 5.3

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


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

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

但是两者的语法不同,
get()
方法将
数组
作为参数
all()
方法将
字符串
数组
都作为参数

Model::all('field1','field2')
字符串作为参数

CategoryModel::all('catName', 'catID', 'imgPath')->where('catType','Root');
CategoryModel::all(['catName', 'catID', 'imgPath'])->where('catType','Root');
Model::all(['field1','field2'])
array
作为参数

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


当然
CategoryModel::select('catName','catID','imgPath')->where('catType','=','Root')->get()
会更好吗?有人有文档页面的链接吗?我找不到他们。具体地说,我想更好地理解
select()
函数。同时感谢all()方法在(字符串和数组)laravel版本6上都有效。x@otosturop,谢谢你的建议,我已经更新了答案。@otosturop,我发现
all
方法调用
get
方法,但从
laravelversion5.1
开始,将
array
string
都作为参数,因此从
laravel5.1
开始,string
array
都将在
all()
方法的参数中工作。