Php 雄辩关系计数约束

Php 雄辩关系计数约束,php,laravel-5,eloquent,eloquent-relationship,Php,Laravel 5,Eloquent,Eloquent Relationship,我试图写一个有说服力的问题,其工作原理如下: Tables: Order Support Ticket (one to many with the order) 查询: 过滤支持票证,仅当支持票证的有效期小于45天时才显示订单 我觉得这将是对Laravel中whereHas()方法的一种修改,但我不知道如何在这样的关系上实现过滤器或日期搜索 谢谢 $orders = Order::whereDoesntHave('support_ticket') ->orWhereHas('su

我试图写一个有说服力的问题,其工作原理如下:

Tables:
Order
Support Ticket (one to many with the order)
查询: 过滤支持票证,仅当支持票证的有效期小于45天时才显示订单

我觉得这将是对Laravel中whereHas()方法的一种修改,但我不知道如何在这样的关系上实现过滤器或日期搜索

谢谢

$orders = Order::whereDoesntHave('support_ticket')
    ->orWhereHas('support_ticket', function($query) {
        $query->where('created_at', '>=', now()->subDays(45));
    })->get();
其中“support_ticket”是订单模型中关系的名称。 通过这种方式,您可以检索没有支持票证的订单,或者至少有一个且不到45天的订单

由于您在Laravel 5中,可能没有定义now(),那么您可以使用:

\Illuminate\Support\Carbon::now()

非常感谢。我看到这迫使订单上必须至少有一张票。有没有一种方法可以在条件语句中使用它?比如“如果它真的有票,它必须在过去45天内”我想我明白了,我可以加上一个“Where Doesnthave”,然后加上“Where Doesnthave”是的,就是这样!如果你知道了就告诉我@ackerchez编辑了答案,告诉我它是否有效!也许你可以编辑这个问题,这样就可以把它全部清除掉!