я должен присоединиться к таблице, которая имеет отношения с другой таблицей, и вернуть результат в мое представление в виде читаемых данных и отобразить правильные данные для каждого пользователя. Это мой код в контроллере.
Это работает, но данные из отношений отсутствуют, что я делаю неправильно?
$GetUsers = User::groupBy('id');
$all = OngoingTasks::with(['tasksdata', 'taskstatus'])->joinSub($GetUsers, 'users', function ($join) {
$join->on('ongoing_tasks.user_id', '=', 'users.id');
})->get();
Текущие задачи имеют связь «один ко многим» со статусом задачи и связь «один к одному» с данными задачи.
У пользователя есть один ко многим с текущими задачами.
Как я должен получить отношения OngoingTasks, когда я это сделаю?
Что означает один ко многим в вашем случае здесь? У одного пользователя может быть много текущих задач?
Да, я изменил свое описание
Если OngoingTask принадлежит одному пользователю, то в модели OngoingTask
добавьте следующее:
public function user()
{
return $this->belongsTo(User::class);
}
И вы можете изменить запрос на это:
OngoingTasks::with(['tasksdata', 'taskstatus', 'user'])->get();
Если вы хотите получить OngoingTasks на основе идентификаторов пользователей, хотя описанный выше подход будет делать то же самое, но на всякий случай, если вы отфильтруете пару пользователей, сделайте это вместо этого:
$userIds = User::pluck('id');
$all = OngoingTasks::with(['tasksdata', 'taskstatus', 'user'])->whereIn('user_id', $userIds)->get();
Не знаю, как сортировать данные из этого огромного массива. но это сработало;) спасибо!
Если у вас много текущих задач, попробуйте разбить их на страницы. Удачного кодирования!
Почему бы не определить hasOne (в текущих задачах) для пользователя?