我有mysql表“公告”有帖子,还有列publish_date
即DateTime
当我构建我的查询时:
$announcements = Announcement::where('status',1)
->where('publish_date', '<','NOW()')
->orderBy('publish_date', 'DESC')
->paginate(9);
查询日志显示:
select * from `announcements`
where `status` = 1 and `publish_date` < NOW()
order by `publish_date` desc
limit 9
offset 0
然而,这是我的dd($ announcements-&gt; toArray()); (没有代表发布图像的代表权,http://i.imgur.com/EwTEIzI.png)
如果您看到第一个结果是2014年8月14日的publish_date(今天是12日)
...无论其
当我在MySQL中对同一个数据库进行RUN IDENTICAL查询时: (没有代表,没有图片,对不起:http://i.imgur.com/GQurS6W.png
这让我疯了我在where语句中尝试过单引号和双引号的各种组合。我删除了分页,我删除了状态,orderby,同样的结果。甚至基本疯狂检查:清除缓存。没有运气
我不是在正确地写出哪个陈述?
唯一有效的HACKJOB解决方案是:
$now = date('Y-m-d H:i:s');
.....
->where('publish_date', '<', $now)
虽然这有效,但从查询的角度来看,这不是一个合法的解决方案。还有其他一些例子我需要进行MySQL日期操作,例如,如果我不能使用NOW(),那么使用PHP替代方案就很难解决它。
我宁愿使用原生NOW()而不是将日期传递给查询。谢谢你们
答案 0 :(得分:1)
Eloquent为此目的接受碳日期:
$announcements = Announcement::where('status',1)
->where('publish_date', '<',Carbon::now())
->orderBy('publish_date', 'DESC')
->paginate(9);
否则你可能会使用:
$announcements = Announcement::where('status',1)
->where('publish_date', '<',DB::raw('NOW()'))
->orderBy('publish_date', 'DESC')
->paginate(9);