Получить мин (дата), макс (дата) с группой по красноречивым laravel - PullRequest
0 голосов
/ 01 февраля 2019

Этот запрос предназначен для получения других данных с наибольшим значением даты в группе по / уникальному.Здесь я использовал уникальный вместо группы по.
Мой вопрос, как получить мин (дата) и макс (дата) с группой по / уникальным.Группировка по / уникальна для поля даты таблицы набора данных.
Я искал это, но не нашел точного решения, как получить максимальную и минимальную дату с группировкой по / уникальному в laravel eloquent.
В структуре таблицы естьнесколько записей для одного кода, поэтому здесь я использовал group by / unique, чтобы получить одну запись для кода.

Может быть несколько дат, как 02-01-2003,01-03-2007,01-01-2019, 01-07-2018 ... и т. Д. С тем же / другим кодом.Если я сгруппируюсь по коду, то получу по одной записи на код.Поэтому здесь я хочу выбрать максимальную дату [01-01-2019] и минимальную дату [02-01-2003].

Заранее спасибо.

Контроллер:

$datasets = Dataset::where('user_id', $user_id)
          ->orderBy('date','desc')
          ->get(['code', 'access','user_id','date'])
          ->unique('code');

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Попробуйте выбрать максимальную и минимальную дату следующим образом:

$datasets = Dataset::select('code', 'access','user_id', DB::raw('MAX(date) as max_date'),  DB::raw('MIN(date) as min_date'))
                    ->where('user_id', $user_id)
                    ->orderBy('date','desc')
                    ->get()
                    ->unique('code');
0 голосов
/ 07 февраля 2019

Наконец-то я получил решение, но это не может быть точным решением, но, поскольку я новичок и не получаю точное решение, я делаю эту функцию, как показано ниже:

Я создал два разных запроса, чтобы получить минимальные и максимальные значения.

$min_datasets = Dataset::where('user_id', $user_id)
      ->orderBy('date','asc')
      ->get(['code', 'access','user_id','date'])
      ->unique('code');


$max_$datasets = Dataset::where('user_id', $user_id)
      ->orderBy('date','desc')
      ->get(['code', 'access','user_id','date'])
      ->unique('code');
0 голосов
/ 01 февраля 2019
$data = DB::table('table_name')->where('user_id',$user_id)
->select('code','access','user_id','date')
->whereBetween('date', [02-01-2003, 01-01-2019])
->groupBy('unique_column')
->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...