【问题标题】:Eloquent Relationship Count Constraint雄辩的关系计数约束
【发布时间】:2020-10-20 19:52:53
【问题描述】:

我正在尝试编写一个雄辩的查询,其工作方式如下:

Tables:
Order
Support Ticket (one to many with the order)

查询: 过滤支持票并仅在支持票不到 45 天时显示订单。

我觉得这将是 Laravel 中 whereHas() 方法的改编版,但我不确定如何在这样的关系上实现过滤器或日期搜索。

谢谢!

【问题讨论】:

    标签: php laravel-5 eloquent eloquent-relationship


    【解决方案1】:
    $orders = Order::whereDoesntHave('support_ticket')
        ->orWhereHas('support_ticket', function($query) {
            $query->where('created_at', '>=', now()->subDays(45));
        })->get();
    

    其中“support_ticket”是您的订单模型中的关系名称。 通过这种方式,您可以检索没有支持票证或至少有 1 天且不到 45 天的订单。

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

    \Illuminate\Support\Carbon::now()
    

    【讨论】:

    • 非常感谢。我看到这迫使订单上必须至少有一张票。有没有办法在条件中使用它?比如“如果确实有票,则必须在过去 45 天内”
    • 我想我明白了,我可以添加一个“whereDoesntHave”然后执行“orWhereHas”
    • 是的,就是这样!让我知道你是否想通了!
    • @ackerchez 编辑了答案,告诉我它是否有效!也许您可以编辑问题,以便将其全部清除!
    猜你喜欢
    • 2016-07-02
    • 2017-03-16
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多