Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
laravel 5.1:如何仅使用where子句更新一行?_Laravel_Laravel 5 - Fatal编程技术网

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

laravel 5.1:如何仅使用where子句更新一行?,laravel,laravel-5,Laravel,Laravel 5,我想用where子句更新一行。 我没有行id,只有2个where子句。 可能吗? (雄辩) 更新与以下条件相对应的所有行: 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', ...)); 第一

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


更新与以下条件相对应的所有行:

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', ...));
第一行,对应于以下条件:

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', ...));

当然,只需获取行,然后像往常一样更新它

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

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

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

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

或者,要一次更新一行表,可以使用方法take(rows\u count)。 例如:

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