0
我想創建(上Laravel 5.2)兩個實體之間的支點創建一個比其他ID相關領域的數據透視表,讓我們假設我們有實體的用戶和電話。在我們的世界中,用戶可以擁有多部手機,而手機可以擁有多個擁有者。如何在Laravel 5.2
是有原因的,我必須針對用戶的手機由它的序列號和構建年(我們假設連續不能在同一年相同)。
所以我有我的表users
,phones
和users_phones
。
===== Table users =====
id
username
...
===== Table phones ====
id
serial_numer
build_year
===== Table users_phones ====
user_id
phone_serial
phone_build_year
我有我的模型電話我關係:
public function users()
{
return $this->belongsToMany(
User::class,
'users_phones',
'user_id',
'phone_serial'
)->withPivot('phone_build_year');
}
當我wan't添加一些條目這樣的:
$phone->users()->attach([$user->id => [
'phone_build_year' => $phone->build_year
]]);
生成的SQL請求是以下一個:
insert into `users_phones` (`user_id`, `phone_serial`, `phone_build_year`) values (1, 5, 2016)
我的問題是,sql請求中的5
是電話號碼,而不是它的序列號。我沒有找到如何精確到Laravel使用我們選擇的字段(這裏是序列號)而不是id。
是否有可能做到這一點,還是我註定要創建一個模型來處理我的特殊透視表?我承認,如果我能避免這種情況,我將不勝感激。
Laravel不會讓你做到這一點 - 它僅允許'belongsToMany'相關車型的'主要key'。您可以爲數據透視表使用其他模型,也可以在'BelongsToMany'關係上創建自定義實現。 –
這就是我的想法,太糟糕了!感謝您的答案。 – Okipa