CakePHP 中的关联帮助 - 航班搜索示例
Tl;dr:(我宁愿学习钓鱼也不愿被喂鱼,但我在自学 CakePHP 与 5 个表数据库的关联时遇到了困难)
所以,我正在与数据库人员一起开发一个航班搜索项目。他使用适当的外键设计了数据库,我相信他做得很好,因为他在硅谷一家主要公司使用数据库。
我们在数据库中有这些表:
- Trips
- Legs
- Segments(一个段是一个部分)一条腿和一次旅行包含多条腿)
- 机场
- 航空公司
我可能应该用更简单的模式在 CakePHP 中做我的第一个项目,但这并不是一个真正的选择,所以:这里正确的关联是什么?
现在我有这个:
旅行有很多条腿;腿表
腿属于行程中的外键 trip_id; Legs 表
Legs 中的外键 trip_id 有很多段;段表中的外键leg_id
就是这样。很明显,我需要更多才能充分使用 CakePHP(至少我认为是这样),并且我认为数据库设计阻碍了我(不能保证我的朋友已经对其进行了最佳设计)。我只是不知道机场和航空公司该怎么办。
我花了几个小时谷歌搜索并重新阅读了我正在使用的书。感谢您提供的任何帮助和一般 CakePHP 协会的建议/想法。
Tl;dr: (I'd rather learn to fish than be fed a fish but am having trouble teaching myself CakePHP associations with a 5 table DB)
So, I'm working on a flight search project with a database person. He's designed the database with appropriate foreign keys and I trust him to have done a good job because he works with databases at a major Silicon Valley Co..
We've got these tables in the database:
- Trips
- Legs
- Segments (A segment is a part of a leg and a trip contains multiple legs)
- Airports
- Airlines
I should probably be doing my first project in CakePHP with a simpler schema but that's not really an option so: What are the correct associations here?
Right now I have this:
Trips hasMany legs; foreignkey trip_id in legs table
Legs belongsTo trips; foreign key trip_id in legs table
Legs hasMany segments; foreign key leg_id in segments table
And that's it. So clearly I need more to fully use CakePHP (I think so, at least) and I think I'm impeded by the database design (it's not guaranteed that my friend has designed it optimally). I just am not sure how to do the airports and airlines.
I have spent a few hours googling and re-reading the book I'm using. Thanks for any help and GENERAL CakePHP-Association advice/thoughts you have.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,保持你的联系有两种方式。
这将允许您访问如下模型:
Leg 和 Segment 也是如此。此外,CakePHP 模型的命名约定规定它们是单一的。 :)
Generally, keep your associations two-ways.
This will allow you to access models like so:
Same goes for Leg and Segment. Also, the naming convention for CakePHP models dictates that they be singular. :)