如何在Laravel中选择最小和最大

时间:2019-09-26 08:55:25

标签: laravel laravel-5 eloquent

我想在laravel中转换此代码。

SELECT MAX(date_start) AS DateStart,MIN(date_end) AS DateEnd FROM DBTest

我尝试这段代码

$data = DB::table('DBTest')
    ->select(max('date_start'), min('date_end')))
    ->get();

返回错误:max():仅给出一个参数时,它必须是一个数组

我正在使用laravel 5.2和SQLyog作为数据库

我在语法上感到困惑,请帮助我

4 个答案:

答案 0 :(得分:2)

您不能在select语句中使用函数,但可以使用原始SQL:

$data = DB::table('DBTest')
   ->select(\DB::raw('MIN(date_start) AS DateStart, MAX(date_end) AS DateEnd'));
   ->get();

答案 1 :(得分:0)

您可以这样做:

有关最长开始日期:

max = DB::table('DBTest')->select('date_start')->orderBy('date_start', 'desc')->first();

最短结束日期:

 min = DB::table('DBTest')->select('date_end')->orderBy('date_end', 'asc')->first();

答案 2 :(得分:0)

您必须在Laravel中使用称为selectRaw的方法才能获得此结果。像->max('columnA')->min('columnB')这样的链接方法将不起作用。所以,这是解决方案:

$data = DB::table('DBTest')
->selectRaw('MAX(date_start) AS DateStart, MIN(date_end) AS DateEnd')->get();

答案 3 :(得分:0)

在sql查询中尝试MIN()MAX()函数。

$data = DB::table('DBTest')
  ->select(\DB::raw('MIN(date_start) AS startDate, MAX(date_end) AS endDate'));
  ->get();