【问题标题】:Laravel Query Builder sum multiple columnsLaravel 查询生成器对多列求和
【发布时间】:2021-11-13 00:15:05
【问题描述】:

如图所示,我有三张桌子。

我想运行一个查询,返回:Total_Parcel_Value, Total_Parcel_Delivery of parcels from all orders where customer = A.

【问题讨论】:

    标签: laravel eloquent laravel-query-builder


    【解决方案1】:

    假设您的关系设置正确,您可以执行以下查询:

    $res = Parcel::query()
        ->whereHas('order', function($q){
            $q->where('customer_id', 12);
        })
        ->selectRaw('SUM(parcel_value) as Total_Parcel_Value, SUM(delivery_fee) as Total_Parcel_Delivery')
        ->first();
    
    $res->Total_Parcel_Value; 
    $res->Total_Parcel_Delivery;
    

    【讨论】:

      【解决方案2】:

      在这里试试这个:

      // 客户模型

      ...
      
      public function orders(): HasMany
      {
         return $this->hasMany(Order::class)
      }
      
      

      //订单模型

      ...
      
      public function customer(): BelongsTo
      {
         return $this->belongsTo(Customer::class)
      }
      
      public function parcels(): HasMany
      {
         return $this->hasMany(Parcel::class)
      }
      
      

      // 地块模型

      ...
      
      public function order(): BelongsTo
      {
         return $this->belongsTo(Order::class)
      }
      
      

      查询:

      
      Parcel::selectRaw('SUM(parcel_value)')
        ->selectRaw('SUM(delivery_fee)')
        ->whereHas('order.customer', function(Builder $builder) use ($customerName) {
           $builder->where('customers.name', $customerName)
         })->first()
      

      【讨论】:

        猜你喜欢
        • 2015-12-03
        • 1970-01-01
        • 2019-06-25
        • 2019-09-12
        • 1970-01-01
        • 2021-02-20
        • 2015-12-13
        • 1970-01-01
        • 2016-09-26
        相关资源
        最近更新 更多