laravel 5.1:如何仅使用where子句更新一行?

时间:2016-05-16 12:54:16

标签: laravel laravel-5

我想只用where子句更新一行。 我没有行id,只有我有2个where子句。 可能吗? (雄辩地说)

->where("x",1) ->where("y"=2)

4 个答案:

答案 0 :(得分:3)

使用Active Record时,不应直接在数据库中执行更新。首先从数据库中提取记录,然后更新它:

Model::where(['x' => 1, 'y' => 2])->first()->update([...]);

如果您直接在数据库中进行更新,则不会触发任何ORM功能(例如触发事件或触摸父母)。

答案 1 :(得分:1)

更新所有符合条件的行:

Model::where("x",1)->where("y",2)->update(array('key' => 'new_value', ...));

第一行,对应条件:

Model::where("x",1)->where("y",2)->first()->update(array('key' => 'new_value', ...));

答案 2 :(得分:0)

当然,只需获取行,然后照常更新。

SomeModel::where('somecondition', 'somevalue')
         ->where('someothercondition', 'someothervalue')
         ->first()
         ->update(['somecolumn' => 'somenewvalue']);

答案 3 :(得分:0)

或者,要一次更新一行表,可以使用方法take(rows_count)。 示例:

Model::query()->where(['x' => 1, 'y' => 2])
->take(1)->update(['x' => 4, 'y' => 5]);