Как правильно хранить остатки товаров, когда n складов?
Почитайте об их Eloquent, пропишите связи и тогда работа будет очень простой.$products = Products::with(['stocks', 'stocks.stock'])->find($id);
$product->name;
$product->stocks; // массив со стоками из stocks
$product->stocks[0]->name; // выведен данные из таблицы stock
не проще ли использовать inner join?
SELECT products.id, products.name, stock.name, stocks.count 
from products 
inner join stocks ON stocks.product = product.id
Inner join stocks ON stocks.stock =stock.id
GROUP BY products.id
дальше через where можете фильтровать как вам надо.