【问题标题】:How to set default DateTime() in Laravel migrations? [duplicate]如何在 Laravel 迁移中设置默认 DateTime()? [复制]
【发布时间】:2016-09-05 11:27:33
【问题描述】:

我正在尝试实现如下所示的功能:

$table->dateTime('time')->default(new \DateTime());

这个确切的代码失败了,因为

[错误异常]
DateTime 类的对象无法转换为字符串

另一个问题是,我觉得应该有更强大/优雅的方式来解决这个问题。那么,如何在迁移中正确设置默认的DateTime 值呢?

【问题讨论】:

  • 我不明白为什么这个问题被标记为重复。 Timestamp 和 dateTime 相似,但没有一个答案说明如何为dateTime 设置默认值,而不是timestamp。要设置 dateTime 默认值,您可以使用Carbon$table->dateTime('time')->default(\Carbon\Carbon::now());
  • @Mirceac21 挑战在于它将设置为当时的实际当前时间。这将动态设置它$table->dateTime('app_date')->default(DB::raw('CURRENT_TIMESTAMP'));
  • @Mirceac21 这是一个非常糟糕的方法。您想要插入时的当前日期时间,而不是在宣布迁移时!
  • @Juan @kakoma 我认为问题是关于使用DateTime 时迁移引发的错误。你们都是对的,但这取决于应用程序需要什么“时间”来使用 php 或 mysql 或固定日期(例如:Carbon::yesterday())。问题是如何设置默认日期时间而不是当前时间。

标签: laravel laravel-migrations


【解决方案1】:

试试这个:

$table->timestamp('time')->useCurrent = true;

看看,如果这有帮助。

【讨论】:

  • 为什么使用true?是否需要?
  • 您应该可以拨打$table->timestamp('time')->useCurrent()。它可能会做完全相同的事情,但不会结束链条,这可以让你做例如$table->timestamp('time')->useCurrent()->change()。不过,这可能来自更新版本的 Laravel,而不是 2016 年的版本。
  • 我认为@SteenSchütt 的方式更优雅......谢谢......我只是编辑 Gaurav Dave 的答案以方便其他人......
猜你喜欢
  • 2018-11-23
  • 1970-01-01
  • 2021-11-26
  • 2015-02-17
  • 2016-10-06
  • 2013-01-02
  • 2020-04-20
  • 2018-08-19
  • 1970-01-01
相关资源
最近更新 更多