Php 其中日期不起作用

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();

我正在尝试根据Laravel中的年龄进行搜索查询。然而,当我尝试在两个日期之间进行查询时,没有得到任何结果。我的代码如下所示:

    $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死亡并输出此语句的结果。和以前一样。当然,也要确保对我在这篇文章中写的碳元素进行修改:-)啊。所以这是两件不同的事情。很高兴听到你把它修好了。