如何在Laravel Eloquent中执行以下查询?
SELECT catID, catName, imgPath FROM categories WHERE catType = "Root"
我试过以下
CategoryModel::where('catType', '=', 'Root')
->lists('catName', 'catID', 'imgPath');
但它只返回两个字段。
Array ( [7] => Category 1 )
答案 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');