【发布时间】:2019-10-19 20:35:42
【问题描述】:
我想解决以下问题:
我有一个模型 (Car),它作为与另一个带有数据透视表的模型 (Driver) 的关系加载。
汽车 -> 属于ToMany 驱动程序(带枢轴)-> 属于ToMany 附件(带枢轴)。
该模型又具有加载了枢轴的关系 (accessories)。
问题:模型Accessories 有两个可以根据其他因素加载的数据透视表。如果模型Accessories 作为Driver 的关系加载为Car 的关系,则应正确输出数据透视表。
这就是现在的样子:
collect($request->input('data.driver'))->each(function ($driver) use
(
$car
) {
$ndriver = Driver::findOrFail($driver['id']);
$added = $car->driver()->save($driver, [
'custom' => $driver['custom'],
'title' => $driver['title'],
'factor' => $driver['factor'],
]);
/*Save attributes*/
$added->syncDriverAttributes($driver['attributes']],
$car->id);
});
现在我应该在$added->syncDriverAttributes($driver['attributes'], $car->id); 中指定在$added 中创建的透视数据的透视ID。不幸的是,我目前无法找出枢轴 ID 是什么,因为它没有在 $added 中返回。
问题:我也无法从时间戳中找出最后一个数据透视 ID,因为所有条目都具有相同的时间戳。
所以我的问题是:我该如何解决?
【问题讨论】:
-
数据透视表通常没有
id列。主键是被链接的两个模型键的组合。所以accessories_drivers将有accessory_id和driver_id作为复合主键。 -
好的,我明白了。我在
accessories_drivers中添加了bigIncrements,希望我能得到回报。我还能如何解决该问题以将枢轴链接到特定的car、driver和accessory? Maybe I could generate a UUID and save this aspivot` 以用于$car->driver(),并将其作为pivot中的外键引用以用于accessory?跨度>
标签: laravel eloquent laravel-6