php – Laravel 5.2时间戳

php – Laravel 5.2时间戳,第1张

概述好吧,我正在尝试使用Laravel 5.2迁移制作一些简单的数据库模式. 它们现在非常基本.问题是创建的结果表没有在 mysql中反映出我在架构构建器中指定的内容. 例如: 创建下表(忽略表后的图片): 我很确定如果我想允许空值,我应该使用nullableTimestampts()也没有默认值,也没有“on update CURRENT TIMESTAMP”等. 我在这里错过了什么? aritsa 好吧,我正在尝试使用Laravel 5.2迁移制作一些简单的数据库模式.
它们现在非常基本.问题是创建的结果表没有在 mysql中反映出我在架构构建器中指定的内容.
例如:


创建下表(忽略表后的图片):

我很确定如果我想允许空值,我应该使用nullableTimestampts()也没有默认值,也没有“on update CURRENT TIMESTAMP”等.

我在这里错过了什么?
aritsan命令非常简单:

PHP artisan make:migration create_table_institutes --create=institutesPHP artisan migrate

我在Ubuntu 14.04,PHP7,Apache MysqL
这是我的播种代码:

DB::table('institutes')->insert([    'name' => 'Ncbi','base_curl' => 'eutils.ncbi.nlm.nih.gov/entrez/eutils/',]);
解决方法 实际上Schema Builder的时间戳方法是从Laravel 5.2开始设计的. nullableTimestamps方法只是一个同义词,它更明确地描述了时间戳的创建方式,它所做的全部内容都是 call the timestamps method.

因此,如果您需要不可为空的时间戳字段,则需要手动创建它们.同样,对于使用MysqL当前时间戳自动填充的created_at列,它需要一个默认值.所以这:

$table->timestamps();

应该替换为:

$table->dateTime('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));$table->dateTime('updated_at')->nullable();

对于MysqL 5.6.5之前的版本,其中DATETIME列不能具有默认值,可以使用TIMESTAMP列:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));

虽然,如果您正在使用Eloquent,除了在创建模型条目时始终填充的created_at列之外,其他列应该是可为空的,因为它们将仅在更新或软删除时获取值.

总结

以上是内存溢出为你收集整理的php – Laravel 5.2时间戳全部内容,希望文章能够帮你解决php – Laravel 5.2时间戳所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1256412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存