【问题标题】:How to SUM a field inside of with eloquent relationships by using Laravel eloquent query format如何使用 Laravel 雄辩的查询格式对具有雄辩关系的字段求和
【发布时间】:2021-07-06 08:00:58
【问题描述】:
$data = Product::with('items')->whereBetween('date', ['2000-01-01', '2000-01-31'])->get();
dump($data);

输出

    [
      0=>[
        "id"=>11
        "type"=>"food"
        "items"=>[
          0 =>[
            "id"=>333
            "set_id"=>1
            "member_price"=> 22
            "non_member_price"=> 0
          ]
          1 =>[
            "id"=>444
            "set_id"=>2
            "member_price"=> 0
            "non_member_price"=> 33
          ] 
        ]
      ]
      1=>[
        "id"=>22
        "type"=>"food"
        "items"=>[
          0 =>[
            "id"=>444
            "set_id"=>1
            "member_price"=> 44
            "non_member_price"=> 0
          ]
          1 =>[
            "id"=>555
            "set_id"=>2
            "member_price"=> 0
            "non_member_price"=> 55
          ] 
        ]
      ]
      2=>[
        "id"=>33
        "type"=>"beverage"
        "items"=>[
          0 =>[
            "id"=>666
            "set_id"=>1
            "member_price"=> 66
            "non_member_price"=> 0
          ]
          1 =>[
            "id"=>777
            "set_id"=>2
            "member_price"=> 0
            "non_member_price"=> 77
          ] 
        ]
      ]
    ]

我的问题:当 type 相同且 set_id 相同时,如何使用 Laravel 雄辩查询对 items 的关系表中的字段 member_pricenon_member_price 求和?

我希望得到如下结果响应

    [
      0=>[
        "id"=>11
        "type"=>"food"
        "items"=>[
          0 =>[
            "id"=>333
            "set_id"=>1
            "member_price"=> 66
            "non_member_price"=> 0
          ]
          1 =>[
            "id"=>444
            "set_id"=>2
            "member_price"=> 0
            "non_member_price"=> 88
          ] 
        ]
      ]
      1=>[
        "id"=>33
        "type"=>"beverage"
        "items"=>[
          0 =>[
            "id"=>666
            "set_id"=>1
            "member_price"=> 66
            "non_member_price"=> 0
          ]
          1 =>[
            "id"=>777
            "set_id"=>2
            "member_price"=> 0
            "non_member_price"=> 77
          ] 
        ]
      ]
    ]

【问题讨论】:

    标签: php laravel eloquent eloquent-relationship


    【解决方案1】:

    这个怎么样?

    $data = Product::with('items')
        ->withSum([ 'items.member_price', 'items.non_member_price' ])
        ->whereBetween('date', ['2000-01-01', '2000-01-31'])
        ->get();
    

    【讨论】:

      猜你喜欢
      • 2021-06-17
      • 2016-07-01
      • 2016-02-26
      • 1970-01-01
      • 2015-03-14
      • 2018-11-28
      • 2015-01-11
      • 2021-06-03
      • 2020-03-26
      相关资源
      最近更新 更多