在mySql中,我可以按如下方式对最新日期的数据执行:
select * from tbl where date = 'select max(date) from tbl';
但我不知道怎么做才是拉拉维尔?怎么做?
答案 0 :(得分:5)
使用orderbBy()
:
TblModel::orderBy('date','DESC')->first();
或
DB::table('tbl')->orderBy('date', 'DESC')->first();
<强>更新强>
TblModel::where('date', TblModel::max('date'))->orderBy('date','desc')->get();
答案 1 :(得分:2)
您可以使用latest()
:
DB::table('tbl')->latest()->first(); // considers created_at field by default.
或者
DB::table('items')->latest('date')->first(); //specify your own column
引擎盖下:
latest()
将orderBy
与您在descending
订单中提供的列一起显示默认列为created_at
的列。
//Illuminate\Database\Query\Builder
public function latest($column = 'created_at')
{
return $this->orderBy($column, 'desc');
}
答案 2 :(得分:1)
您也可以在此处使用Eloquent进行查询
TableModel::latest()->first(); // returns the latest inserted record
TableModel::oldest()->first(); // returns the first ever inserted record from your table
答案 3 :(得分:-3)
这里有详细记载:
https://laravel.com/docs/5.6/eloquent#retrieving-single-models
您还可以使用
(not static)
,count
,sum
以及查询构建器提供的其他聚合方法。这些方法返回适当的标量值,而不是完整的模型实例:
示例:
max
如前所述,您不一定需要使用$max = DB::table('tbl')::max('date');
$max = App\TblModel::where('active', 1)->max('date');
语法的模型。
您还应该考虑的是此处提供的答案的performance aspect(如果您至少不使用该列的索引)