我想在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作为数据库
我在语法上感到困惑,请帮助我
答案 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();