Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中同步多对多关系时如何防止更改透视表主id_Php_Mysql_Laravel_Eloquent_Pivot Table - Fatal编程技术网

Php 在Laravel中同步多对多关系时如何防止更改透视表主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']

我正在使用数据透视表主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);
            }
        }
是否有任何内置功能可以做到这一点?如果没有,我如何改进它