Laravel检索非直接相关值轴上的关系
我在用户和帖子表上有一个多对多关系,设置了一个透视表,在透视表中,有另一个列位置id链接到位置表 在用户模型中,多对多关系定义为:Laravel检索非直接相关值轴上的关系,laravel,pivot-table,Laravel,Pivot Table,我在用户和帖子表上有一个多对多关系,设置了一个透视表,在透视表中,有另一个列位置id链接到位置表 在用户模型中,多对多关系定义为: public function postings() { return $this->belongsToMany('App\Models\Posting', 'posting_user')->withPivot('position_id','contact_type'); } public function users() {
public function postings() {
return $this->belongsToMany('App\Models\Posting', 'posting_user')->withPivot('position_id','contact_type');
}
public function users() {
return $this->belongsToMany(Auth\User::class, 'posting_user')->withPivot('position_id','contact_type');
}
在发布模型中,多对多关系定义为:
public function postings() {
return $this->belongsToMany('App\Models\Posting', 'posting_user')->withPivot('position_id','contact_type');
}
public function users() {
return $this->belongsToMany(Auth\User::class, 'posting_user')->withPivot('position_id','contact_type');
}
我的数据透视表如下所示:
我访问的数据如下:
$postings = Auth::User()->postings()->get();
现在,我必须在我的刀片上为每个帖子显示职位名称。我的问题是从pivot我只能访问position_id号
$postings->first()->pivot->position_id
但我想做的是:
$postings->first()->pivot->position_id->name
现在,我必须对每个记录进行单独查询,以获得职位名称,这不是一个很好的解决方案。
那么,有没有更好的方法可以使用
public function postings() {
return $this->belongsToMany('App\Models\Posting', 'posting_user')
->withPivot('position_id','contact_type')
->using(UserPosting::class);
}
UserPosting.php
class UserPosting extends Illuminate\Database\Eloquent\Relations\Pivot {
public function position()
{
return $this->belongsTo(Position::class);
}
}
用法
$postings->first()->pivot->position->name
听起来您可能想通过这里的关系建立一个
,而不是hasManyThrough
?