Php 如何在Laravel Eloquent中选择某些字段?
如何在Laravel中进行以下查询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()将
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()
方法的参数中工作。