mysql 小数 存储_mysql 存储小数

鉴于它是原始表达式,您应该使用它DB::raw()来设置CURRENT_TIMESTAMP列的默认值:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); 这在每个数据库驱动程序上都可以完美运行。

新捷径

从Laravel 5.1.25开始(请参阅PR 10962并提交15c487fe),可以使用新的useCurrent()列修饰符方法将设置CURRENT_TIMESTAMP为列的默认值:

$table->timestamp('created_at')->useCurrent(); 回到问题,在MySQL上,您还可以ON UPDATE通过DB::raw()以下方式使用子句:

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); 陷阱 MySQL

从MySQL 5.7开始,0000-00-00 00:00:00不再被视为有效日期。如Laravel 5.2升级指南中所述,当您将记录插入数据库时​​,所有时间戳列均应收到有效的默认值。您可以useCurrent()在迁移中使用column修饰符(来自Laravel 5.1.25及更高版本)将timestamp列默认为当前时间戳,或者可以使timestamps nullable()允许空值。

PostgreSQL&Laravel 4.x

在Laravel 4.x版本中,PostgreSQL驱动程序使用默认的数据库精度来存储时间戳值。在CURRENT_TIMESTAMP具有默认精度的列上使用该函数时,PostgreSQL会生成具有更高可用精度的时间戳,从而生成带有小数第二部分的时间戳- 请参见此SQL提琴。

这将导致Carbon无法解析时间戳,因为它不会期望存储微秒。为了避免这种意外行为破坏您的应用程序,您必须对函数明确给出零精度,CURRENT_TIMESTAMP如下所示:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)')); 从Laravel 5.0开始,将timestamp()列更改为使用默认精度零,从而避免了这种情况。来源:stack overflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值