【问题标题】:How to set model attribute to current date format using MySQL functions?如何使用 MySQL 函数将模型属性设置为当前日期格式?
【发布时间】:2016-01-10 01:23:39
【问题描述】:

我有一个模型Users 并且每次用户登录loggedin_at 字段都会更新。

$user = User::find(1);

$user->token = md5(time());
$user->loggedin_at = date('Y-d-m H:i:s');
$user->save();

return $user;

但我已经从经验中知道,有时 MySQL 时间和 PHP 时间之间存在差异。因此,当您使用 time > NOW() - INTERVAL 1 HOUR 之类的比较时,它现在可能会正常工作,因为您从 PHP 设置日期并从 MySQL 进行比较。

无论如何我的问题是我想使用NOW() 来更新我的日期。我试试

$user->loggedin_at = DB::raw('NOW()');

但这不起作用。通过查看 Eloquent 的源代码,我已经设法解决了这个问题

$user->loggedin_at = new \Carbon\Carbon();

这就是 Eloquent 用来改变时间的方法。

  1. 如何使用NOW()设置时间?
  2. 我应该使用 NOW() 还是继续使用 Carbon 更好?

【问题讨论】:

  • 我觉得还是用 Carbon 比较好。
  • 谢谢,非常感谢您的意见。

标签: laravel orm laravel-5 eloquent


【解决方案1】:

最好使用 Carbon,这就是它的用途。 Laravel 开箱即用,并在 created_at 和 updated_at 中使用它。

如果你使用 Carbon,你也可以使用 config/app.php 中的时区配置来同步 PHP 的时间和 Carbon 的“NOW”。

此外,如果您想更改从 Carbon 获得的结果,您可以执行以下操作:

$now = Carbon::now(new DateTimeZone('Europe/London'));

//can also be passed as a string
$now = Carbon::now('Europe/London');

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 2014-03-27
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多