У меня есть 2 таблицы, customers
и customer_invoices
, и я хочу получить всех клиентов с условием в своих счетах и выбрать определенные столбцы (Customers.id, Customers.last_name и сумму total_price
счетов на каждого клиента), у меня есть этот запрос:
$result = Customer::whereHas('customerInvoices', function(Builder $q) {
$q->where('customer_invoices.status', 1);
})->select([
'customers.id',
'customers.last_name',
\DB::raw('SUM(customer_invoices.total_price) as sum')
])->get();
customerInvoices
это отношение:
public function customerInvoices() {
return $this->hasMany(CustomerInvoice::class);
}
Я хочу использовать подзапросы вместо объединений, поэтомуздесь я не могу выбрать это \DB::raw('SUM(customer_invoices.total_price) as sum')
, иначе я получаю эту ошибку, конечно:
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'customer_invoices.total_price' in 'field list' (SQL: select `customers`.`id`, `customers`.`last_name`, SUM(customer_invoices.total_price) as sum from `customers` where exists (select * from `customer_invoices` where `customers`.`id` = `customer_invoices`.`customer_id` and `customer_invoices`.`status` = 1))"
Как мне добиться этого без использования объединений?