我正在使用Laravel 5.5,我想知道如何在一个查询中获得每列的最高价值?
这是可能的还是我们应该逐个查询?
我试过下面的代码。
DB::table('family')->max('children')->max('salary');
当我尝试DB::table('family')->max('children')
时,效果很好。但是,当我尝试DB::table('family')->max('children')->max('salary')
时,我得到以下错误
在字符串上调用成员函数max()
您可以通过单个查询获得。
$result = DB::table("family as f")
->select([DB::raw('MAX(f.children) AS children_max'),DB::raw('MAX(f.salary) AS salary_max')])
->groupBy('f.id')
->first();
或使用单独的->max()
方法。
$family = DB::table('family');
$max_children = $family->max('children');
$max_salary = $family->max('salary');
在other answer和Laravel Docs获取更多细节
使用您的口才添加max()
以获得每个列值的最大值。
ModelName::select(DB::raw('MAX(column1) AS colum1'),DB::raw('MAX(colum2) AS colum2'))->get();
检查这个laravel docs
编辑:您可以使用laravel中的查询构建器来执行此操作。