1.目前在做一个计算分仓仓库的库存页面。
页面如下:
基本代码如下:
$products = Product::leftJoin('product_details as pd', 'products.id', '=', 'pd.product_id')
->where('status', Product::STATUS_ENABLED)
->where(function($query) use ($sku){
if($sku) {
$query->where('pd.sku','like', '%' . $sku . '%');
}})
->where('type', Product::TYPE_SINGLE)
->orderBy('product_name', 'asc')
->orderBy('pd.created_at', 'desc')
->select('products.product_name','products.category_id','products.id','pd.num','pd.sku')
->paginate(1000);
//->get();
foreach($products as $product){
$product->categorys = isset($product->getCategory) ? $product->getCategory->name : '';
foreach($warehouses as $k=>$v){
$warehousesId = $v->id;
$product->$warehousesId = isset($product->getWarehouseStorageNum->where('warehouse_id', $warehousesId)->first()->num)?$product->getWarehouseStorageNum->where('warehouse_id', $warehousesId)->first()->num:0;
}
}
将查询好的数据,通过循环仓库warehouse表来去分库库存表warehouse_storage里面找到对面的这个商品的分库库存。
这个是仓库表,id跟分仓库表warehouse_id进行关联
这个是分仓库表 product_id跟商品表的id进行关联
这样的话,当warehouse表中增加了新的仓库地址,我也不需要修改代码页面就能多出新的一列来展示新的分仓库存。但是目前这样的查询太浪费时间了,效率很低。不知道能怎样优化或者使用其他方法来达到我想要的效果?才疏学浅,希望各位路过的能不啬令教!