Мои модели структурированы таким образом:
Stock (hasMany) StockItem
StockItem (belongsTo) Shipment
Shipment (hasMany) StockItem
- item_cost = double
Итак, я пытаюсь получить все предметы и сумму их total_cost (находится в модели отгрузки).
public function getStockItemsTotalCost($stockItemId=null){
$q = $this->stockItems()->where('id','=',$stockItemId)->with('shipment')->withCount([
'shipment AS cost_total' => function ($query) {
$query->select(DB::raw("SUM(item_cost) AS cost_total"));
}
]);
print_r($q);exit;
}
Это возвращает Allowed memory size of 268435456 bytes exhausted
ошибку.
Это лучший способ сделать этот запрос?
Я получил небольшой прогресс
public function getStockItemSumCost($stockItemId){
$q = $this->stockItems()->whereHas('stockPart', function($q) use ($stockItemId) {
return $q->where('id', '=', $stockItemId);
})->with('shipment')
->get();
print_r($q->toArray());exit;
}
Это возвращает список StockItem с отгрузкой внутри каждого ...
Мне нужен один столбец с SUM () для всех столбцов Shipment.item_cost.