Php 其中日期不起作用
我正在尝试根据Laravel中的年龄进行搜索查询。然而,当我尝试在两个日期之间进行查询时,没有得到任何结果。我的代码如下所示:Php 其中日期不起作用,php,mysql,laravel,Php,Mysql,Laravel,我正在尝试根据Laravel中的年龄进行搜索查询。然而,当我尝试在两个日期之间进行查询时,没有得到任何结果。我的代码如下所示: $today = Carbon::today(); $age_from = $today->subYears($request->age_from)->toDateString(); $age_to = $today->subYears($request->age_to)->toDateString();
$today = Carbon::today();
$age_from = $today->subYears($request->age_from)->toDateString();
$age_to = $today->subYears($request->age_to)->toDateString();
$users->whereBetween('birthday', [$age_from, $age_to]);
//Get matching users.
$users = $users->Paginate(self::paginate);
当我使用mySql()查看时,查询看起来是正确的,但由于某些原因,我没有得到任何结果。可能是语法错误?错误使用toDateString和比较MySQL的日期
编辑:
$age_的输出来自:
Carbon @959558400 {#245 ▼
date: 2000-05-29 00:00:00.0 UTC (+00:00)
}
$age_to的输出为:
Carbon @-302745600 {#245 ▼
date: 1960-05-29 00:00:00.0 UTC (+00:00)
}
原因是您对
$today
对象进行了两次变异。如果选中,$age\u from
的值与第3行后面的$age\u to
的值相同
你应该写:
$today = Carbon::today();
$age_from = $today->copy()->subYears($request->age_from);
$age_to = $today->copy()->subYears($request->age_to);
或者干脆
$age_from = Carbon::today()->subYears($request->age_from);
$age_to = Carbon::today()->subYears($request->age_to);
感谢所有人,尤其是@skovmand和@Jonas Staudenmeir帮助了我;我通过促进@skovmand的代码解决了这个问题,更重要的是(从我的角度来看也是愚蠢的),日期应该交换,所以不是[$age\u from,$age\u to],而是[$age\u to,$age\u from],因为$age\u to显然是开始日期。但是谢谢,伙计们 不是100%确定,但我认为您不需要执行
toDateString
。laravel querybuilder接受碳日期扫描您发布的var\u dump($age\u from)
和var\u dump($age\u to)
?刚刚尝试删除它,但仍然没有得到任何结果。@Djave,我已经用输出更新了我的问题。必须先发布较早的日期。我已经用您的代码更新了我的代码,但没有结果,遗憾的是,然后检查您是否确实从查询中获得了结果,$users->wherebeen('birth',[$age\u from,$age\u to])代码>,我假设您使用的是查询生成器,所以它必须是$users->whereBetween('birth',[$age\u from,$age\u to])->get()代码>我已尝试使用和不使用toDateString()。当我删除整个whereBetween子句时,我确实得到了结果。我不明白为什么我不能用whereBetween()获得任何结果。试着运行dd($users->whereBetween('birth',[$age\u from,$age\u to])->get()
使laravel死亡并输出此语句的结果。和以前一样。当然,也要确保对我在这篇文章中写的碳元素进行修改:-)啊。所以这是两件不同的事情。很高兴听到你把它修好了。