2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
您將永遠(yuǎn)無法通過在角色集合中調(diào)用 setter 來訪問它。
這是錯(cuò)誤的:
$user->roles->setter
讓我們看一個(gè)可行的示例:
foreach($user->roles as $role)
{
dd($role->pivot->setter)
}
為了做到這一點(diǎn),您需要更改模型以反映如下內(nèi)容:
用戶
class User extends Model
{
public $timestamps = false;
public function roles()
{
return $this->belongsToMany(Role::class)
->using(UserRolePivot::class)
->withPivot([
'role_id',
'user_id',
'setter_id',
]);
}
}
角色
class Role extends Model
{
public $timestamps = false;
public function users()
{
return $this->belongsToMany(User::class)
->using(UserRolePivot::class)
->withPivot([
'role_id',
'user_id',
'setter_id',
]);
}
}
樞
use Illuminate\Database\Eloquent\Relations\Pivot;
class UserRolePivot extends Pivot
{
protected $fillable = [
'role_id',
'user_id',
'setter_id',
];
public function role()
{
return $this->belongsTo(Role::class , 'role_id');
}
public function user()
{
return $this->belongsTo(User::class , 'user_id');
}
public function setter()
{
return $this->belongsTo(User::class , 'setter_id);
}
}

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以更新belongsToMany
調(diào)用以在數(shù)據(jù)透視表上包含 setter_id,然后通過訪問它->pivot->setter_id
并使用該 id 檢索模型。
return?$this->belongsToMany(Role::class)->withPivot('setter_id');
或者(也是我個(gè)人的追求)您可以定義一個(gè)自定義樞軸模型,并setter()
在那里創(chuàng)建一個(gè)關(guān)系,這樣您就可以直接從樞軸檢索模型。
- 2 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報(bào)