Найти дочернюю модель hasMany отношения в laravel eloquent

Вот модель структуры моего проекта Laravel 5.3,


  • User.php (Модель)

у него есть один метод приглашения, который возвращает приглашение пользователя.

public function invitations()
{
return $this->hasMany( 'App\Invitation', 'invitee_id', 'id' );
}

  • Invitation.php (Модель)

У этой модели есть другой метод, который возвращает детали приглашения в приглашении.

public function inviter()
{
return $this->hasOne( 'App\User', 'id', 'invited_by' );
}

Если я хочу получить все приглашения текущего пользователя, это работает,

\Auth::user()->invitations;

Но если я попытаюсь получить информацию о приглашающем, это не сработает! (Вопрос: как это сделать?)

\Auth::user()->invitations->inviter;

Хотя я могу запросить приглашение от красноречивого объекта приглашения, как этот,

\App\Invitation::first()->inviter;

Но это не работает, когда я пытаюсь получить к нему доступ из модели пользователя -> приглашение -> приглашающий!
Также я могу использовать нетерпеливую загрузку здесь?

2

Решение

\Auth::user()->invitations->inviter;

Глядя на это, кажется, что вы пытаетесь получить свойство inviter из коллекция приглашений. Причина Предложение Кена использовать \App\Invitation::first()->inviter; работает потому, что вы получаете приглашение только одного приглашения (в данном случае, первого). Чтобы решить эту проблему, переберите свои приглашения, прежде чем пытаться получить свойства для каждого:

$invitations = \Auth::user()->invitations;

foreach ($invitations as $invitation) {
$inviter = $invitation->inviter;
}

Существует также метод each () специфичные для коллекций Laravel, которые позволят вам перебрать ваш объект.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]