为什么Laravel/Elount single object save()会更新多条记录
我正在使用数据库表获取特定记录为什么Laravel/Elount single object save()会更新多条记录,laravel,laravel-eloquent,Laravel,Laravel Eloquent,我正在使用数据库表获取特定记录 $myTableObj = MyTable::where(['type' => $sometype])->first(); 成功获取,更新某些字段并使用保存 $myTableObj->save(); 令人惊讶的是,此记录与另一个也具有“type”=$sometype的记录一起更新。可以采取什么措施来防止这种情况? 注意:最初该表没有“自动增量id”字段,但我在论坛上看到它可能会在Laravel中出现问题,所以我添加了它,但没有解决问题。我知道
$myTableObj = MyTable::where(['type' => $sometype])->first();
成功获取,更新某些字段并使用保存
$myTableObj->save();
令人惊讶的是,此记录与另一个也具有“type”=$sometype的记录一起更新。可以采取什么措施来防止这种情况?
注意:最初该表没有“自动增量id”字段,但我在论坛上看到它可能会在Laravel中出现问题,所以我添加了它,但没有解决问题。我知道更新就是更新,但是,我的答案很好,也适合更新。当您不想再次为更新定义列时,它很有用,当它们不可填充时,它将使用主键作为条件进行测试
$myTableObj->save;基本上,它用于保存新记录,如果要更新该行,可以按以下代码进行更新:
$myTableObj=new MyTable;
$myTableObj->exists=true;
$myTableObj->type=$sometype;//this is your condition, identify
$myTableObj->update();
我认为这里发生的事情是,Laravel正在保存和更新行。方法保存只使用“id”字段
你可以试试这个
$myTableObj = MyTable::where(['type' => $sometype])->update(['something' => 'value']);
我们可以看更多的代码吗?如何测试?这是内部测试吗?您的表模式似乎有问题,能否显示模型类?这与OP的要求相反。他只希望检索到的记录被更新更新同样有效,我已经在我自己的项目中使用了它。在检索到的模型上调用save方法来更新模型。