Стремясь загрузить отношения с соединением подзапроса

я должен присоединиться к таблице, которая имеет отношения с другой таблицей, и вернуть результат в мое представление в виде читаемых данных и отобразить правильные данные для каждого пользователя. Это мой код в контроллере.

Это работает, но данные из отношений отсутствуют, что я делаю неправильно?

    $GetUsers = User::groupBy('id');

    $all = OngoingTasks::with(['tasksdata', 'taskstatus'])->joinSub($GetUsers, 'users', function ($join) {
        $join->on('ongoing_tasks.user_id', '=', 'users.id');
    })->get();

Текущие задачи имеют связь «один ко многим» со статусом задачи и связь «один к одному» с данными задачи.

У пользователя есть один ко многим с текущими задачами.

Почему бы не определить hasOne (в текущих задачах) для пользователя?

ka_lin 28.05.2019 15:52

Как я должен получить отношения OngoingTasks, когда я это сделаю?

DutchPrince 28.05.2019 15:57

Что означает один ко многим в вашем случае здесь? У одного пользователя может быть много текущих задач?

nakov 28.05.2019 15:58

Да, я изменил свое описание

DutchPrince 28.05.2019 16:03
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если 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();

Не знаю, как сортировать данные из этого огромного массива. но это сработало;) спасибо!

DutchPrince 28.05.2019 16:07

Если у вас много текущих задач, попробуйте разбить их на страницы. Удачного кодирования!

nakov 28.05.2019 16:08

Другие вопросы по теме