Используя Laravel и PHP, я должен объединить элементы с одинаковым product_id, чтобы узнать, сколько из них у меня есть на складе.Я забираю все товары на текущем складе и получаю.
array:3 [▼
0 => array:5 [▼
"factor" => -1
"quantity" => 14
"product_name" => "Phone"
"product_id" => 1
"product_symbol" => "iP"
]
1 => array:5 [▼
"factor" => 1
"quantity" => 120
"product_name" => "Phone"
"product_id" => 1
"product_symbol" => "iP"
]
2 => array:5 [▼
"factor" => -1
"quantity" => 5
"product_name" => "Sam Washing Machinge"
"product_id" => 2
"product_symbol" => "Sa_DA123WE"
]
]
Теперь в моем представлении я хочу отобразить текущий статус инвентаря:
<tbody>
@foreach($values as $key => $value)
<tr>
<td>{{$key+1}}</td>
<td>{{$value->product_name}}</td>
<td>{{$value->product_symbol}}</td>
<td>{{$value->quantity}}</td>
</tr>
@endforeach
</tbody>
Проблема в том, что это вызывает:
Name: Symbol: Quantity:
Phone iP 14
Phone iP 120
Sam Sa 5
Итак, как вы видите, у меня есть две записи с телефоном и должна быть только одна, потому что это один и тот же элемент, который должен быть рассчитан следующим образом:
(foreach products with the same id factorOfTheFirstItem*quantityOfTheFirstItem + factorOfTheSecondItem*quantityOfTheSecondItem and so).
Такнаконец мой сайт должен выглядеть:
Name: Symbol: Quantity:
Phone iP 106
Sam Sa 5
Контроллер:
$values= Document::where('id_warehouse', $warehouseId)
->leftJoin('document_items', 'documents.id', '=','document_items.document_id')
->leftJoin('products', 'products.id', '=', 'document_items.product_id')
->select('documents.factor as factor', 'document_items.quantity as quantity','products.name as product_name','products.id as product_id','products.symbol as product_symbol')
->get()->toArray();
return view('admin.inventory.index', compact('values'));
Спасибо за помощь!:)