【发布时间】:2016-08-19 10:52:06
【问题描述】:
考虑下面的表结构:
user table
id
name
lang_region_id
lang_region table
id
lang_id
region_id
lang table
id
name
region table
id
name
对 Laravel 框架来说相当新,但试图设置 Eloquent 模型和与现有数据库的关系。我想建立我的用户模型与语言和区域模型之间的关系。 lang_region 表定义了可用的语言和区域组合,然后我们可以将每个用户链接到一个有效的组合。
我已经多次阅读 Laravel 文档以寻找正确的关系类型,但似乎多对多和多通过关系很接近,但由于我们的 user.id 没有在中间表中使用,所以我可能不走运。
很抱歉这个业余问题,但只是习惯了 Laravel 和 ORM。
【问题讨论】:
-
您应该使用数据透视表。然后 Eloquent 效果很好
-
这是我最初的想法,但看起来 Eloquent 与数据透视表的关系依赖于数据透视表中存在的 id 以及在该表上旋转的表。 lang_region 表是我的数据透视表,因为它包含 lang_id 和 region_id,但我要解决的问题是我的用户表只有一个 lang_region 行的外键,我希望通过 lang_region 访问给定的 lang用户。
-
您确定您的数据库结构是经过深思熟虑的吗?解释一下为什么lang_region表是part,需要引用?
-
lang_region 表决定了可用的本地化组合。允许我将 US-EN 和 CA-FR 指定为有效组合,但不能指定 US-FR。然后在用户表中引用来自这些有效组合的 ID。
标签: php mysql laravel eloquent