为什么Laravel / Eloquent单个对象save()更新多个记录

时间:2017-07-27 09:02:32

标签: laravel laravel-eloquent

我正在使用

获取包含数据库表的特定记录
$myTableObj = MyTable::where(['type' => $sometype])->first();

成功完成,更新某些字段并使用

保存
$myTableObj->save();

令人惊讶的是,此记录与另一条记录一起更新,该记录也包含'type'= $ sometype。可以做些什么来防止这种情况? 注意:最初该表没有自动增量id字段,但我在论坛中读到它可能会在Laravel中出现问题,所以我确实添加了它,但没有解决问题。

2 个答案:

答案 0 :(得分:0)

仅使用“id”处理的方法save()

你可以试试这个

$myTableObj = MyTable::where(['type' => $sometype])->update(['something' => 'value']);

Source

答案 1 :(得分:-1)

我理解update()是要更新,但是,我的回答工作正常,也适合更新。它非常有用,你不希望再次为更新定义列,(sp当它们不可填充时,用主键作为条件进行测试)

$myTableObj->save();基本上用于保存新记录,如果你想更新那行,你可以更新如下代码:

$myTableObj=new MyTable;
$myTableObj->exists=true;
$myTableObj->type=$sometype;//this is your condition, identify 
$myTableObj->update();

我认为这里发生的事情是Laravel正在保存以及更新行。