Php 如何在每次保存时将NOW()保存到我的Laravel雄辩模型中的同一字段?

Php 如何在每次保存时将NOW()保存到我的Laravel雄辩模型中的同一字段?,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,每次我执行以下操作时: $user = new User; $user->name = 'John'; $user->save(); 我想在MySQL中将名为“modified”的字段更新为NOW()。我不能使用Laravel的时间戳,因为我只使用一个修改过的字段。我可以依靠MySQL来完成这项工作,但我想知道是否有办法在我的Laravel模型中实现这一点?在保存之前,可能会以某种方式使用一个变量来设置它 作为奖励:我将如何做像这样的事情$user->modified=“NOW()

每次我执行以下操作时:

$user = new User;
$user->name = 'John';
$user->save();
我想在MySQL中将名为“modified”的字段更新为
NOW()
。我不能使用Laravel的时间戳,因为我只使用一个修改过的字段。我可以依靠MySQL来完成这项工作,但我想知道是否有办法在我的Laravel模型中实现这一点?在保存之前,可能会以某种方式使用一个变量来设置它


作为奖励:我将如何做像这样的事情
$user->modified=“NOW()”
?(这显然是错误的,但希望能证明这一点)

您可以在
保存
事件中完成这一点,您可以在模型的
引导
方法中注册回调:

类用户扩展了雄辩的{
公共静态函数boot()
{
静态::保存(函数($user)
{
$user->modified=DB::raw('NOW()');
//或者,您可以使用以下选项:
$user->modified=Carbon\Carbon::now();
});
父::boot();
}
}

我想你可以
选择NOW()
并分配它。是的,但这是一个额外的查询,这是一个额外的查询。如果时区etc设置为与MySQL安装相同,则可以使用PHP的
time()
@马蒂也想到了这一点,但仍然没有达到我提出这个问题的目的。需要一种方法来插入那些MySQL常量/函数,比如
NOW()
。@Prix我只使用了一列。所以我有
public$timestamps=false在我的模型中。万岁!还解决了我想将会话用户添加到
修改者
字段的位置的问题<代码>$user->modified_by=Auth::user()->id
@DavidGraham这个答案是否与您的评论相冲突:
但这个问题可以进一步提供一个解决方案,即如何将非参数化/非引用值(如现在)放入查询中(而不使用db::raw调用)
?可以(见问题中的奖金)但是还要注意,这里使用的
db::raw
不是用来运行原始查询的。请检查它!它起作用了<代码>$user->modified=DB::raw(“NOW()”)工作。但我确实看到我的评论会让@Marty感到困惑,我指的是一个完整的原始查询
DB::select(DB::raw…
query