数据表的结构设计问题
现有几张表如下,一张表为dishes
菜单表,结构为
id name price
一张表为orders
订单表,结构为
id dish_id num ...
一张表为tablewares
餐具表,结构为
id name price
一张表为order_dishes
表,结构为
id order_id dish_id
需求:用户在app界面需要选择该菜的餐具(每种菜所用有的餐具可能不同),所以就设计了一张dish_tablewares
表,用来对应dishes
与tableware
的关系,当用户下单后,订单里面不同的菜所选择的餐具该怎么存储。order_dish_tablewares
用来存储订单
,菜
,餐具
之间的关系,结构是这样的
id order_id dish_id tableware_id
但是这样岂不是一张表关联了三张表,而且用ORM
取出相关数据的时候也是麻烦的厉害啊,百思不得解,遂来发帖求大大们帮助!!
这个时候,你需要了解下 Laravel Eloquent 的: 远层一对多
熊仔,问题问的很专业啊 :sunglasses:
@Summer 问题解决啦,谢谢站长。:laughing: 每次一有问题想不通就跑来发帖了,一般都是在晚上发帖,这样在睡一觉起来就能看到站长大人给我解决方案了。 太感谢本站了。已经成了生活的一部分:lips:
首先说一个大的原则,
涉及到钱的东西一定不要嫌麻烦
.如果按你上述设计的表结构,使用 Eloquent 进行查询并不复杂,你的
order_dish_tablewares
表需要增加一个order_dishes
的 id 用于查询.这样使用如下方式就可以直接查询了
另外,你with到原始商品表(例如 dishes)去查询,有一个非常大的隐患,就是原始商品可能发生变更,名称和价格都有可能修改(
不要听信产品经理说的不会变更
),这样已经下单的用户在查看订单的时候就会发现跟他购买的时候不一样了,到时候你就说不清楚了,解决办法就是把商品中的数据在 order 表中需要再存一遍.所以你的订单明细表可能变成这样
@TimJuly 学习了,很详细的方案。非常感谢!:100: