在我的应用中,我有用户和门票。
在表'门票'中我有一个外键,如下所示:
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
在模型'Ticket'中我有这种关系:
public function owner()
{
return $this->belongsTo('App\User');
}
用户模型:
public function createdTickets()
{
return $this->hasMany('App\Ticket');
}
通过这样做:
dd(\Auth::user()->createdTickets()->get()->toArray());
我得到所有门票,这里没问题。但是当我试图从票证中获取所有者时,它给了我null:
$ticket = \Auth::user()->createdTickets()->first();
dd($ticket->owner); //if I try dd($ticket) it juts fine.
PS:为了记录,我在两个模型(多对多)之间有另一种关系
票:
public function followers()
{
return $this->belongsToMany('App\User')->withTimeStamps();
}
用户:
public function followingTickets()
{
return $this->belongsToMany('App\Ticket')->withTimeStamps();
}
答案 0 :(得分:0)
我在laracasts论坛上得到了答案:
for" belongsTo"关系eloquent使用外键上的方法名称。我正在使用owner()
,因此雄辩地寻找owner_id
字段。
所以我必须这样做:
public function owner()
{
return $this->belongsTo('App\User', 'user_id');
}