加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel 5.2时间戳

发布时间:2020-12-14 19:42:48 所属栏目:大数据 来源:网络整理
导读:好吧,我正在尝试使用Laravel 5.2迁移制作一些简单的数据库模式. 它们现在非常基本.问题是创建的结果表没有在 mysql中反映出我在架构构建器中指定的内容. 例如: 创建下表(忽略表后的图片): 我很确定如果我想允许空值,我应该使用nullableTimestampts()也没有
好吧,我正在尝试使用Laravel 5.2迁移制作一些简单的数据库模式.
它们现在非常基本.问题是创建的结果表没有在 mysql中反映出我在架构构建器中指定的内容.
例如:

enter image description here


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

enter image description here

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

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

php artisan make:migration create_table_institutes --create=institutes
php 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列之外,其他列应该是可为空的,因为它们将仅在更新或软删除时获取值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读