如何在 Laravel 迁移中设置默认 DateTime()? [复制]
Posted
技术标签:
【中文标题】如何在 Laravel 迁移中设置默认 DateTime()? [复制]【英文标题】:How to set default DateTime() in Laravel migrations? [duplicate] 【发布时间】: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()
)。问题是如何设置默认日期时间而不是当前时间。
【参考方案1】:
试试这个:
$table->timestamp('time')->useCurrent = true;
看看,如果这有帮助。
【讨论】:
为什么使用true?是否需要? 您应该可以拨打$table->timestamp('time')->useCurrent()
。它可能会做完全相同的事情,但不会结束链条,这可以让你做例如$table->timestamp('time')->useCurrent()->change()
。不过,这可能来自更新版本的 Laravel,而不是 2016 年的版本。
我认为@SteenSchütt 的方式更优雅......谢谢......我只是编辑 Gaurav Dave 的答案以方便其他人......以上是关于如何在 Laravel 迁移中设置默认 DateTime()? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在迁移 laravel 5.1 中设置自动增量字段从 1000 开始