【发布时间】:2016-04-26 16:36:05
【问题描述】:
基本上,我尝试对包含两个主键的表中的一行进行更新。主键是Trad_id 和Trad_lang。对于每个不同的行,我想使用正确的数据进行更新,但 Eloquent 使用相同的 Trad_id 更新所有行。
为什么 Eloquent 更新所有行?
$tradInt = \Model\Traduction::where('Trad_id', $reference->Trad_id)->where("Trad_lang", "INTERNE")->first();
$tradInt->Trad_text = 'ABC';
$tradInt->save();
$tradExt = \Model\Traduction::where('Trad_id', $reference->Trad_id)->where("Trad_lang", "EXTERNE")->first();
$tradExt->Trad_text = 123;
$tradExt->save();
+---------+-----------+-----------+-----------+
| Trad_id | Trad_lang | Trad_type | Trad_text |
+---------+-----------+-----------+-----------+
| 1206 | INTERNE | | 123 |
| 1206 | EXTERNE | | 123 |
| 1206 | FR | | 123 |
+---------+-----------+-----------+-----------+
【问题讨论】:
-
first()方法只会返回一项,所以您确定它在每个更新语句中更新了数据库中的多行吗?在更新之前尝试dd()查询结果,这样您就可以看到正在更新的内容。另外,您的表是否需要复合主键?也许这就是导致问题的原因?
标签: php mysql laravel eloquent