2

这是我的 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;

但是,当我尝试从用户模型-> 邀请-> 邀请者访问它时,这不起作用!我也可以在这里使用急切加载吗?

4

1 回答 1

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

看看这个,您似乎正在尝试从邀请集合中检索邀请者属性。Ken 建议使用有效的原因\App\Invitation::first()->inviter;是因为您正在检索仅一个邀请的邀请者(在本例中为第一个)。要解决此问题,请在尝试检索每个邀请之前遍历您的邀请:

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

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

Laravel 集合还有一个 each() 方法可以让你遍历你的对象。

于 2017-01-27T16:55:12.407 回答