避免更新时间戳 - Laravel

时间:2014-04-03 02:27:17

标签: laravel laravel-4

如何避免更新以下查询的时间戳:

$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();
}

1 个答案:

答案 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));

但是,我更喜欢第一种方式,因为更新标志似乎是一次性操作。