php - Eloquent 更新所有行

标签 php mysql laravel eloquent

基本上,我尝试对包含两个主键的表中的一行进行更新。主键是 Trad_idTrad_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       |
+---------+-----------+-----------+-----------+

最佳答案

问题是 Laravel 不支持复合键,并且肯定他们将来不会支持它。所以解决方案是使用更新查询:

\Model\Traduction::where('Trad_id', $reference->Trad_id)
    ->where("Trad_lang", "EXTERNE")
    ->update(['Trad_text' => 123]);

这是这个问题:

https://github.com/laravel/framework/issues/5355

请参阅 Taylor 对此的回应。

关于php - Eloquent 更新所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36859119/

相关文章:

java - 如何将 JDBC 驱动程序导入 Dynamic Web Project?

php - Spatie-laravel-analytics软件包ga:用户不准确

php - zend 不使用列,并选择所有内容

php - fatal error : Can't use function return value in write context in

MySQL 外键约束失败

php - 在sql查询中自动增加一个varchar

Laravel mix,在resources中调用app.js

php - 使用 Eloquent 的 Laravel block 方法

php - Laravel Form::select multiple,保存所有选定字段的数组或列表,而不仅仅是最后选择的字段

PHP获取本地日期和时间