Сложные красноречивые отношения - PullRequest
0 голосов
/ 13 июня 2019

У меня есть простая система продажи билетов. Допустим, я забираю билет и все отношения к нему. Билет может иметь несколько replies, а также несколько attachments.

$ticket = Ticket::with('replies')
                    ->with('attachments')
                    ->find($id); 

Точно так же каждый reply будет иметь user_id, и, следовательно, получать данные для пользователя.

Вот где хитрость.

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

Но я верю, что есть лучший способ.

Ответы [ 2 ]

3 голосов
/ 13 июня 2019

Добавьте belongsTo связь с таблицей пользователей в вашей модели ответа.

$ticket = Ticket::with('replies.user', 'attachments')->find($id);

И если вы хотите показать список всех ответов, вы можете использовать

$replies = Reply::with('user')->get();
1 голос
/ 13 июня 2019

Вы можете изменить свой запрос, как показано ниже, с новым отношением в модели replies, пусть оно будет userDetails

$ticket = Ticket::find($id)
->with([
    'replies',
    'replies.userDetails',
    'attachments'
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...