如何设计一个多对多关系的模式,其中一个表是存储订购的商品?

时间:2019-02-16 16:07:43

标签: php mysql database laravel

订购的物品是旅行路线,其属性为origin_city_iddestination_city_iddeparture_date

还有另一个表pax,其属性如adultchildren

一个花花公子旅行对成行。因此,应该存在将pax与行程相关的多对多关系。 某些情况可能类似于:

旅行_1 = ['pax'=> Pax_1,'行程'=> [行程_1,行程_2]]

旅行_2 = ['pax'=> Pax_1,'行程'=> [行程_1,行程_2,行程_3]]

Trip_3 = ['pax'=> Pax_2,'itineraries'=> [Itinerary_1,Itinerary_2]]

如果查询为['pax'=> Pax_1,'itineraries'=> [Itinerary_1,Itinerary_2]],则仅应返回Trip_1。

起初,我使用多对多关系将表tripsitineraries进行关联,但是后来发现建立这种关系很困难,因为我将有很多旅行记录。另外,由于我需要找到仅包含Itinerary_1和Itinerary_2的行程集,因此搜索可能难以实施。

我现在尝试的是将表itineraries修改为带有外键next_itinerary_id的自我参考表,以指示下一个行程,并在列first中指示该行程是否为第一行程。之后,建立多对多关系要容易得多,我只需要将pax_idfirst_itinerary_id关联起来。

但是当找到查询的路线集时,我需要查询每个路线,但我不确定我是否做对了。

我执行的任何步骤是否错误? 有没有更好的实现方法? 还是我可以学习参考?

谢谢。

1 个答案:

答案 0 :(得分:0)

查看您尝试过的内容将很有帮助。如果您已发布模型和关系,则将更易于查看。如果遇到问题,应参考Laravel's many to many relationships作为参考

然后,您可以渴望在每个pax上加载itineraries表。这样您就可以访问每个乘客的所有行程,并且可以根据您的要求进行搜索。