Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih SUM dari subquery saat menggunakan whereHas di Laravel

Anda dapat menggunakan withCount() untuk mendapatkan jumlah dari model terkait sebagai

$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();

Pendekatan lain untuk mendapatkan jumlah, Anda dapat mendefinisikan hasOne() relasi dalam model Pelanggan Anda seperti

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

Dan di pembuat kueri

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

Sesuai Eloquent :withCount() menimpa $columns pada get() masalah pertama masukkan select() mehtod dan kemudian gunakan with() fungsi




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql tidak akan mulai setelah memutakhirkan Mac OS X Yosemite (Mac OS 10.10)

  2. Bagaimana cara memasukkan beberapa nilai kotak teks dalam satu bidang dengan id berbeda yang berbeda?

  3. Jatuhkan kunci unik kolom muli tanpa menjatuhkan kunci asing?

  4. Bagaimana menghapus duplikat dengan kondisi tertentu

  5. Gunakan beberapa kolom sebagai pengidentifikasi unik untuk mysql