Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете SUM от подзаявката, докато използвате whereHas в Laravel

Можете да използвате withCount() за да получите сума от свързан модел като

$result = Customer::select([
            'customers.id',
            'customers.last_name'
        ])->withCount([
            'customerInvoices as invoice_sum' => function($query) {
                $query->select(DB::raw('SUM(total_price)'));
            }
        ])->whereHas('customerInvoices', function(Builder $q) {
            $q->where('customer_invoices.status', 1);
        })->get();

Друг подход за получаване на сума, можете да дефинирате hasOne() връзка във вашия клиентски модел като

public function invoice_sum()
{
    return $this->hasOne(CustomerInvoice::class)
        ->select('customer_id',
            DB::raw('sum(total_price)')
        )->groupBy('customer_id');
}

И в конструктора на заявки

$result = Customer::select([
            'customers.id',
            'customers.last_name',
        ])->with('invoice_sum')
          ->whereHas('customerInvoices', function(Builder $q) {
            $q->where('customer_invoices.status', 1);
        })->get();      

Съгласно Eloquent :withCount() отменя $columns на get() проблем първо поставете select() mehtod и след това използвайте with() функция




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php обединяване на json масиви

  2. SELECT WHERE IN (подзаявка) бавно

  3. Как да разширя EER диаграма в MySQL Workbench?

  4. Как да използвам JOIN в Yii2 Active Record за релационен модел?

  5. Проверете дали потребителското име вече съществува в базата данни MySQL PHP