我想创建(在Laravel 5.2上)两个实体之间的一个支点,让我们假设我们有实体User和Phone。在我们的世界中,用户可以拥有多部手机,而手机可以拥有多个用户。
出于某种原因,我必须按用户的序列号和构建年份定位用户的电话(让我们假设连续剧在同一年不能相同)
所以我有我的表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');
}
当我不想添加这样的条目时:
$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
是电话ID而不是其序列号。我没有找到如何精确地让Laravel使用我们选择的字段(这里是序列号)而不是id。
是否可以这样做,还是我被谴责创建一个模型来操纵我的特殊数据透视表?我承认,如果我能避免这种情况,我将不胜感激。
答案 0 :(得分:0)
所以,正如Jarek所说,似乎没有办法像我想的那样定制Laravel枢轴关系。我将创建一个专门针对这个特定案例的模型。 无论如何,如果有人有更优雅的方式在Laravel上做这种自定义枢轴关系,请分享你的知识!