С помощью Eloquent я получаю два таких результата из моей базы данных:
$deliveries = table1::select('place_id','product_id',DB::raw("SUM(amount) as amount"))->groupBy('place_id', 'product_id');
$purchases = table2::select('place_id','product_id',DB::raw("SUM(quantity) as amount"))->groupBy('place_id', 'product_id');
Я хочу получить таблицу, в которой все записи суммы в таблице2 вычитаются из таблицы1, если
place_id from table1 == place_id from table2
AND
product_id from table1 == product_id from table2
Я хочу использовать Eloquent, если это возможно, но я также в порядке с некоторым необработанным SQL внутри него или даже с некоторым быстрым php-array-method, чтобы сделать что-то вроде:
$inventory = $deliveries - $purchases;
отредактировано / добавлено
Так что сейчас я делаю это:
foreach ($deliveries as $delivery => $delivValue) {
foreach ($purchases as $purchase => $purchValue) {
if ($delivValue['place_id']==$purchValue['place_id'] && $delivValue['product_id']==$purchValue['product_id']) {
$deliveries[$delivery]['amount'] = $delivValue['amount'] - $purchValue['amount'];
}
}
}
Это работает, как и ожидалось, но я думаю, что это очень неэффективно, когда размеры массивов действительно увеличиваются.