Php 在Laravel中同步多对多关系时如何防止更改透视表主id
我正在使用数据透视表主id,因此它不应通过同步而更改 多对多表中的Php 在Laravel中同步多对多关系时如何防止更改透视表主id,php,mysql,laravel,eloquent,pivot-table,Php,Mysql,Laravel,Eloquent,Pivot Table,我正在使用数据透视表主id,因此它不应通过同步而更改 多对多表中的sync方法将删除透视表中的所有记录并重新插入 以下是我的解决方案: $variationUnits = collect($variationUnits); foreach ($variationUnits as $variationUnit) { if ($variation->units->contains($variationUnit['unit_id']
sync
方法将删除透视表中的所有记录并重新插入
以下是我的解决方案:
$variationUnits = collect($variationUnits);
foreach ($variationUnits as $variationUnit) {
if ($variation->units->contains($variationUnit['unit_id'])) {
$variation->units()->updateExistingPivot($variationUnit['unit_id'], $variationUnit);
}
else {
$variation->units()->attach([$variationUnit]);
}
}
foreach ($variation->units as $variationUnit) {
if (! $variationUnits->pluck('unit_id')->contains($variationUnit->id)) {
$variation->units()->detach($variationUnit->id);
}
}
是否有任何内置功能可以做到这一点?如果没有,我如何改进它