【问题标题】:Check Status Of All Orders In a Deal And Mark Deal as Completed检查交易中所有订单的状态并将交易标记为已完成
【发布时间】:2021-11-25 16:46:26
【问题描述】:

work_orders 是 hasMany() 关系。

foreach ($deal->work_orders as  $work_order) {
            if ($work_order->status != completed) {
                return 0;
            } else {
                completeDeal($deal->id);
            }
        }

我想检查交易中的所有订单是否都已完成,然后运行一个函数来完成交易。如果任何工作订单没有完成,那么什么都不做,然后返回。 我当前代码的问题是,如果任何工作订单完成,则标志着交易完成。 但我想检查是否所有订单都完成了

【问题讨论】:

    标签: laravel if-statement foreach eloquent laravel-relations


    【解决方案1】:

    你可以做一些下面的链接

    foreach ($deals as $key => $deal) {
           $total_order_count = $deal->work_orders->count();
           $completed_order_count = $deal->work_orders->where('status', 1)->count();
            if ($total_order_count != $completed_order_count ) {
                return 0;
            } else {
                completeDeal($deal->id);
            }
        }
    

    当然,您可以自己优化查询,因为由于某种原因我的调试栏无法正常工作。

    【讨论】:

    • 谢谢...当我没有得到答案时我这样做了...但问题是这段代码看起来很长...有没有办法让它变短?
    • 你可以参考这个优化查询youtube.com/watch?v=pJe1OUDCOmY
    猜你喜欢
    • 2019-02-14
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多