Я пытаюсь запросить строки из таблицы транзакций, где сумма меньше суммы выделений для этой строки транзакции в таблице распределений. Это работает на полпути. Он предоставляет мне все запросы транзакций с дополнительным полем «selected_amount».
$all_transactions = Transaction::
withCount([
'allocations AS amount_allocated' => function ($query) {
$query->select(
DB::raw("CAST(SUM(amount) AS INTEGER)"
));
}
])
->where('contact_type','supplier')
->where('contact_id',$ehead->supplier_id)
->get()->toArray();
Результат
0 => array:12 [▼
"id" => 4
"amount" => 10000
"created_by" => 1
"amount_allocated" => 7500
]
1 => array:12 [▼
"id" => 5
"amount" => 10000
"created_by" => 1
"amount_allocated" => 10000
]
Но я не хочу, чтобы появился второй результат, потому что сумма = выделенная сумма. Как исправить этот запрос?
Пытался использовать:
->where('amount','>','allocated_amount')
, но, возможно, из-за того, что он дополнительно добавлен в поле, выдает ошибку о том, что выделенное поле не существует. Мне он нужен в запросе, а не как отдельное дополнение.