php - 可以存在于多个模型上的关系的一个或多个模型/表
问题描述
我有一个模型“Wine”和一个模型“Drink”。Wine 和 Drink 都应该有一个类型 (type_id)。
所以数据库应该看起来像这样:
葡萄酒
id, name, type_id, etc.
喝
id, name, type_id, etc.
我的问题是:
我是不是该
- 制作模型“DrinkType”和模型“WineType”或
- 我应该只使用一种,称为“类型”吗?
酒类
id, name
饮料类型
id, name
类型
id, name, type
nr的数据库示例。1:
葡萄酒
- id,名称,wine_type_id
- 1、试酒1、1
- 2、试酒2、2
饮料
- id,名称,drink_type_id
- 1、试饮、1
酒类
- 身份证,姓名
- 1、红色
- 2、白色
饮料类型
- 身份证,姓名
- 1、鸡尾酒
nr的数据库示例。2:
葡萄酒
- id,名称,type_id
- 1、试酒1、1
- 2、试酒2、3
饮料
- id,名称,type_id
- 1、试饮、2
类型
- 身份证、姓名、类型
- 1,红色,应用\葡萄酒
- 2、鸡尾酒、App\Drink
- 3、白、App\Wine
我正在使用框架“Laravel”并且我知道多态关系。但这是正确的方法吗?https://laravel.com/docs/7.x/eloquent-relationships#one-to-many-polymorphic-relations
我希望我的问题是有道理的,并且有人有一些提示可以解决我的问题:)
解决方案
为此,您需要遵循一对一(多态)关系。
葡萄酒型号名称:-葡萄酒
id
name
饮料型号名称:-饮料
id,
name,
类型
id - integer
body - text
typeable_id - integer
typeable_type - string
您正在关注正确的一个。https://laravel.com/docs/7.x/eloquent-relationships#one-to-one-polymorphic-relations
推荐阅读
- django - Django:发出 Post 请求时出错:CORS 策略:Access-Control-Allow-Headers 不允许请求标头字段正文
- exist-db - eXist-db范围索引中条件组合索引失败
- java - 如何在注销时使记住我无效?
- c# - 等待输入完成并触发一次 OnChange
- docker - 您可以使用 docker-machine 配置物理主机吗?
- python - python spyder编辑器更改菜单和字体大小
- isabelle - 如何为 less_eq 操作生成代码
- oracle - Oracle 存储过程在 SSRS 查询设计器中不起作用
- docker - 适用于 Windows Server 2012 R2 的 Docker
- c++ - 使用声明为“static const”的 QRegExp 对象是否安全?