膳食日历-数据库模式-Laravel
我想建立一个膳食套餐,在那里我可以设计膳食,并将它们与一周中的不同膳食相关联。(早餐或晚餐从1-7开始,持续7天) 我最初的想法是多对多的关系 计划A(不要认为它会奏效) 表:(例如) 班级:(举例) 但是,连接和分离这些将更加困难。。一个典型的多对多不会有相同的两个实体相互链接不止一次,是吗 我用的是Laravel 5.4 我愿意接受关于其他方法的建议 我的另一个想法是这样改变它 计划B(不要认为它是最佳的……) 表:(例如) 班级:(举例)膳食日历-数据库模式-Laravel,laravel,eloquent,relational-database,Laravel,Eloquent,Relational Database,我想建立一个膳食套餐,在那里我可以设计膳食,并将它们与一周中的不同膳食相关联。(早餐或晚餐从1-7开始,持续7天) 我最初的想法是多对多的关系 计划A(不要认为它会奏效) 表:(例如) 班级:(举例) 但是,连接和分离这些将更加困难。。一个典型的多对多不会有相同的两个实体相互链接不止一次,是吗 我用的是Laravel 5.4 我愿意接受关于其他方法的建议 我的另一个想法是这样改变它 计划B(不要认为它是最佳的……) 表:(例如) 班级:(举例) 谢谢大家! 我给你做了一个小ERD 首先,也许下次
谢谢大家! 我给你做了一个小ERD 首先,也许下次尝试使用更好的术语: 我想建立一个套餐,在那里我可以设计膳食,并将它们与一周中的不同膳食相关联 最好翻译成: 我想要一份包含多餐的菜单,可以在一周内重复使用 术语在业务流程中非常重要,在编码中更为重要 它使编码方式更易于理解 这方面的一本好书是:《罗伯特·塞西尔·马丁的干净编码》 现在谈谈有关问题:
- Menuperiod有多个菜单
- 菜单属于菜单超链接[X]
- 菜单是由多种食物组成的
- 一顿饭可以有多种菜单
menuperiod也有一个名字,除非你想给你的menuperiod命名,比如“chickenweek”或著名的“pizzaweek”,否则这个名字是不必要的。但如果是纯日历,您可以将开始和结束日期打印为字符串。谢谢您的回复!这给了我另一种思考=)@MartinDev的方法,我很高兴。如果它回答了您的问题,请将其标记为已接受答案。如果您有任何其他问题,请随时提问;)
meals:
id
name
package:
id:
name:
meal_package:
meal_id
package_id
calendar_code: (enum of {1D, 2D .. 7D, 1B, 2B .. 7B})
class Meal extends Model {
public function packages() {
return $this->belongsToMany(Package::class)->withPivot('calendar_code');
}
}
class Package extends Model {
public function meals() {
return $this->belongsToMany(Meal::class)->withPivot('calendar_code');
}
}
meals:
id
name
package:
id:
name:
meal_package:
meal_id
package_id
calendar_code: (enum of {1D, 2D .. 7D, 1B, 2B .. 7B})
class Meal extends Model {
public function package() {
return $this->hasMany(Package::class);
}
}
class Package extends Model {
public function d1_meal() {
return $this->belongsTo(Meal::class);
}
public function d2_meal() {
return $this->belongsTo(Meal::class);
}
...
}