laravel Eloquent ORM 如何计算 商品库存

产品表

products

id name price quantity
1 苹果 3.20 3
2 香蕉 5.00 100
3 桃子 3.00 100
4 葡萄 9.99 100
5 芒果 6.77 100
6 柚子 8.00 100
7 西瓜 1.20 100

订单表

orders 表有如下数据

id product_id user_id quantity
1 1 1 3
2 2 1 1
3 3 1 2
4 4 1 3
5 5 1 1
6 1 2 2
7 2 2 1

查询库存

希望通过 orders 表查出所有商品的库存数

像这样的的关系 该如何关联呢, 因为每个订单可以选择商品数量 (quantity)

有木有大神 指导一下啊

阅读 5.2k
4 个回答

个人觉得,可以在product表中增加一个剩余数量字段。然后应用观察者模式,创建订单时,剩余数量减少;订单失效后,剩余数量增加

新手上路,请多包涵

一个商品对应多个订单 通过proid hasmany关联试试~

新手上路,请多包涵

库存 应该是 直接从商品,而不是从订单去做统计,难道你的商品不会进行补库存的动作吗,而且 你是不是还要判断订单的当下的状态

在Order的model里定义product

function product(){
return $this->hasOne('App\Model\product','id','product_id');
}

在product的model里定义orders(可以不写)

function orders(){
    return $this->belongsTo('App\Model\order');
}

在控制器里写

$res=Order::query()->select('product_id','user_id','quantity')->with('product')->get();
dd($res->toArray());

偷下懒~就丢一个数据在数据库里~~~
结果如下:
结果图

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题