Как выбрать минимальное и максимальное значения в laravel - PullRequest
2 голосов
/ 26 сентября 2019

Я хочу преобразовать этот код в 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 ]

1 голос
/ 26 сентября 2019

Вы не можете использовать функции в операторе выбора, но вы можете использовать сырой SQL:

$data = DB::table('DBTest')
   ->select(\DB::raw('MIN(date_start) AS DateStart, MAX(date_end) AS DateEnd'));
   ->get();
0 голосов
/ 26 сентября 2019

Попробуйте MIN() и MAX() функции в запросе sql.

$data = DB::table('DBTest')
  ->select(\DB::raw('MIN(date_start) AS startDate, MAX(date_end) AS endDate'));
  ->get();
0 голосов
/ 26 сентября 2019

Вы должны использовать метод под названием selectRaw в Laravel, чтобы достичь этого результата.Метод цепочки типа ->max('columnA')->min('columnB') не будет работать.Итак, вот решение:

$data = DB::table('DBTest')
->selectRaw('MAX(date_start) AS DateStart, MIN(date_end) AS DateEnd')->get();
0 голосов
/ 26 сентября 2019

Вы можете сделать это следующим образом:

Для максимальной даты начала:

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

Для минимальной даты окончания:

 min = DB::table('DBTest')->select('date_end')->orderBy('date_end', 'asc')->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...