#php #laravel #eloquent #group-by #laravel-8
#php #laravel #красноречивый #группировка по #laravel-8
Вопрос:
Возможно, это моя ошибка, но я не мог понять, в чем моя ошибка.
У меня есть модель клиента, которая имеет schedule_registers()
отношение
public function schedule_registers()
{
return $this->hasMany('AppModelsScheduleRegister', 'customer_id', 'id');
}
У меня также есть модель ScheduleRegister, которая имеет teacher()
отношение
public function teacher()
{
return $this->belongsTo('AppModelsUser', 'teacher_id', 'id');
}
Я получаю данные в CustomerController следующим образом (я не использую ->get()
, потому что отправляю эти данные в datatable);
$customer_index = Customer::with([
'company',
'schedule_registers',
'schedule_registers.teacher',
]);
Этот запрос дает мне такой результат;
https://jsonblob.com/915606370225766400
и когда я пытаюсь использовать group by teacher_id и изменить запрос на этот;
$customer_index = Customer::with([
'company',
'schedule_registers.teacher',
'schedule_registers' => function ($q) {
$q->groupBy('schedule_registers.teacher_id');
},
]);
вывод превращается в это;
https://jsonblob.com/915605962518446080
Короче говоря, когда я пытаюсь использовать groupBy, я не получаю никаких ошибок, но получаю неверный вывод. Если бы вы могли проверить выходные данные, когда я использую groupBy, некоторые schedule_registers
данные становятся пустыми, а некоторые — нет.
Какой правильный способ использовать groupBy
в этой ситуации?
Комментарии:
1. Чего вы надеетесь достичь, добавив
groupBy
?2. @Rwd я пытаюсь добиться того, чтобы schedule_registers были сгруппированы по teacher_id. например, если у меня есть 2 записи в таблице schedule_registers с одинаковым teacher_id, мне нужна только одна из них
3. Вы пытаетесь выполнить
groupBy()
отдельный запрос. Включение отношенийwith()
методом не объединяет связанные таблицы, а запрашивает их впоследствии. Я бы предложил получить коллекцию сget()
помощью, а затем выполнить группировку в коллекции.4. попробуйте ` -> groupBy([‘schedule_registers.teacher_id’]);`