Laravel where time="0000-00-00" order by id 查不出结果
Laravel版本是5.4
MySQL 是阿里云的 MySQL5.6
下面表的 time 字段的类型是 timestamp, 默认值是 '0000-00-00 00:00:00'
select * from table where time="0000-00-00" order by id
这条语句直接在MySQL的命令行直接执行是能查出结果的。
但是在Laravel中使用下面这两种方式都查不出结果:
$query = TableModel::where('time','0000:00:00')
->orderByDesc('id')
->get();
$query = \DB::select('select * from table where time="0000-00-00" order by id');
奇怪的是,上面两种方式去掉 order by
或者把where条件换成其他字段就能查出结果了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Laravel 的 config 下的
database.php
strict
设为false
就好了相比关掉严格模式,我更加建议你使用 Carbon 把时间处理一下,或者 Laravel 中的 Date 类。