如何避免更新以下查询的时间戳:
$users = User::where('activated', 0)->update(array('activated' => 1));
我知道,我可以使用以下方法:
$users = User::where('activated', 0)->get(); foreach($users as $user) { $user->timestamps = false; $user->activated = 1; $user->save(); }
答案 0 :(得分:1)
如果您不需要运行触发器/事件/验证/等,则可以使用查询构建器:
DB::table('users')->where('activated', 0)->update(array('activated' => 1));
或者,您可以修改模型(可能是某些Base
模型)并添加如下方法:
public function updateWithoutTimestamps(array $attributes = array())
{
$this->timestamps = false;
$result = $this->update($attributes);
$this->timestamps = true;
return $result;
}
这应该可以解决问题。
$users = User::where('activated', 0)->updateWithoutTimestamps(array('activated' => 1));
但是,我更喜欢第一种方式,因为更新标志似乎是一次性操作。