【发布时间】:2017-06-23 08:24:22
【问题描述】:
我的数据库中有两个表:“tours”和“tourists”。
一个“旅游”可以有很多“游客”,“游客”可以参加很多“旅游”。 所以,我已经通过“begonsToMany”关系成功地将它们关联起来(当向“tours”和“tourists”添加行时,中间表“tour_tourist”也被赋予了一行。
“tour_tourist”表结构为:
tour_id | tourist_id
1 | 37
1 | 38
1 | 39
(id 为 37、38 和 39 的游客被分配到 id = 1 的旅游)
问题:“游客”之一(上例中的 37 或 38 或 39 岁)可能是“旅游”的“买家”(上表中的 1 个)。所以只有 1 人支付旅游费用。这个人也可以去旅游/只付钱。通过网络表单提交旅游时,我会传递这些数据(旅游、游客、买家以及他是否参加过旅游)。
所以我想创建一个名为“buyers”的第三张表,它代表支付旅行费用的“游客”:
tour_id | tourist_id | is_tourist
1 | 39 | 0
(1.一个'tour_id'只能匹配一个'tourist_id')
(2. 'tourist_id' 应该是之前“tour_tourist”表中“属于”“tour_id”的人之一 - 游客 39 属于旅游 1 - 见上表)。
(3. 'is_tourist' 是 1/0,表示买家去旅游/只付钱,在我的例子中是 0 - 他只付钱,不去)。 p>
我想知道如何使用 Eloquent 关系(一对一?hasManyThrough?)来做到这一点。
感谢任何帮助。
【问题讨论】:
-
你真的需要第三张桌子吗?您不应该在游览表中添加一列“buyer_id”(因为只能有一个买家)吗?
-
如果没有“is_tourist”,我会这样做。但由于我有一个额外的论点,在我看来,最好为买家单独提供一张桌子......
-
但是如果游客在 tour_tourist 表中并且他与该旅游相关,则“is_tourist”已经是隐含的。作为游客,您将获得重复的信息。在“buyers”表和“tour_tourist”表中
-
你所说的“隐含”是什么意思,Amarnasan?:) 无论如何,我真的很想知道怎么做!:)
-
“隐含”是指您已经拥有买家是否为旅行者的信息,因为您已经在 tour_tourist 页面中拥有该信息。抱歉这么挑剔,但我只想让你的代码(和生活)不那么复杂:)
标签: laravel relationship