2 回答

TA貢獻1830條經驗 獲得超3個贊
您將永遠無法通過在角色集合中調用 setter 來訪問它。
這是錯誤的:
$user->roles->setter
讓我們看一個可行的示例:
foreach($user->roles as $role)
{
dd($role->pivot->setter)
}
為了做到這一點,您需要更改模型以反映如下內容:
用戶
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貢獻1805條經驗 獲得超10個贊
您可以更新belongsToMany
調用以在數據透視表上包含 setter_id,然后通過訪問它->pivot->setter_id
并使用該 id 檢索模型。
return?$this->belongsToMany(Role::class)->withPivot('setter_id');
或者(也是我個人的追求)您可以定義一個自定義樞軸模型,并setter()
在那里創建一個關系,這樣您就可以直接從樞軸檢索模型。
- 2 回答
- 0 關注
- 153 瀏覽
添加回答
舉報