Php 发现儿童模型与laravel中的许多关系很有说服力

Php 发现儿童模型与laravel中的许多关系很有说服力,php,laravel-5,eloquent,laravel-eloquent,Php,Laravel 5,Eloquent,Laravel Eloquent,这是我的Laravel 5.3项目的模型结构 User.php(模型) 它有一个返回用户邀请的邀请方法 public function invitations() { return $this->hasMany( 'App\Invitation', 'invitee_id', 'id' ); } Invitation.php(模型) 此模型还有另一种方法,可以返回邀请的邀请者详细信息 public function inviter() { return $th

这是我的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;
但是,如果我试图获取有关邀请者的信息,它将不会起作用(问题:如何做?

虽然我可以从这样一个有说服力的邀请对象中查询邀请者

\App\Invitation::first()->inviter;
但当我试图从用户模型->邀请->邀请者访问它时,这不起作用! 我也可以在这里使用即时加载吗

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

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

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

也有特定于Laravel集合的集合,允许您在对象中循环。

是的,您可以在引用模型时使用
::with('user')
。调用
\App\Invitation::first()->inviter时,您得到了什么回报?@Ken
dd(\App\Invitation::first()->邀请者)返回此代码:
$invitations = \Auth::user()->invitations;

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