使用Laravel同步或更新ExistingPivot - 如何基于第三个批评来填充

com*_*ntp 7 php mysql database laravel laravel-4

这是事情,我有3个表,users/users_types/types.

我通过users_types在用户和类型之间有一个belongsToMany,其中包含一些信息.其中一个是表单中的行号.我试图根据userID和行号更新表,但不是在typeID上更新,后者由我的输入填充.

我怎样才能实现呢?我已经试了

updateExistantPivot($line_number->line_number,array(
                                                        'type_id'  => $type_id,
                                                        'etc'             => $etc,
                                                        'duration'          => $duration
                                                    )
                                                );
Run Code Online (Sandbox Code Playgroud)

但显然它不会工作,因为它需要typeID而不是line_number ...我总是想更新相同的line_number和userID.(我在每个行的for循环中).

谢谢你的帮助!

哦,我确实尝试了同步...但它给了我一个外键错误,因为它发送的数据不应该在那里.

Jar*_*zyk 10

如果要更新现有数据透视表,可以执行以下操作:

$model; // parent of the relation
$related; // related object already synced with the $model

$model->relation()->sync([$related->id => [ 'duration' => 'someValue'] ], false);
Run Code Online (Sandbox Code Playgroud)

第一个参数是具有相关模型ID作为键的数组,以及要更新的数据透视值数组,而第二个参数设置为false均值,表示您不会分离所有其他相关模型.