使用日期过滤器的Laravel雄辩查询中的错误结果

时间:2019-05-16 13:37:28

标签: mysql laravel eloquent

我必须从日期列大于今天的数据库中提取结果(基本上我需要查看即将发生的事件)。

在现实世界中,我在MySql控制台中玩游戏:

select * from searcheable where MATCH (title,description) AGAINST ('rock' IN BOOLEAN MODE) and date > CURDATE() order by date  asc

效果很好。

我正在尝试使用Laravel以雄辩的方式提取相同的数据,我写道:

$results = Search::search($key)
            ->whereDate("date",">",' CURDATE()')
            ->orderBy("date",'asc')
            ->paginate();

但是它返回错误的结果和错误的日期。

请注意,我使用的 search 方法是全文。我不认为这是问题所在。

如果我进行调试,并使用dd($ results)打印sql,则会返回:

select * from `searcheable` where MATCH (title,description) AGAINST (? IN BOOLEAN MODE) and date(`date`) > ? order by `date` asc

这与我正在处理的开始查询非常相似。

雄辩的查询有什么问题?

感谢您的时间:)

2 个答案:

答案 0 :(得分:3)

尝试这样

 ->whereDate("date",">", now());

now()将返回Carbon DateTime实例,该实例将自动转换为适当的格式

答案 1 :(得分:1)

看起来您的错误可能是user_rosters格式,因此您需要确保两个日期都采用相同的格式,对于当前日期,我始终使用CURDATE()

然后使用该日期进行搜索...