CakePHP 中的关联帮助 - 航班搜索示例

发布于 2024-10-03 13:16:21 字数 618 浏览 0 评论 0原文

Tl;dr:(我宁愿学习钓鱼也不愿被喂鱼,但我在自学 CakePHP 与 5 个表数据库的关联时遇到了困难)

所以,我正在与数据库人员一起开发一个航班搜索项目。他使用适当的外键设计了数据库,我相信他做得很好,因为他在硅谷一家主要公司使用数据库。

我们在数据库中有这些表:

  1. Trips
  2. Legs
  3. Segments(一个段是一个部分)一条腿和一次旅行包含多条腿)
  4. 机场
  5. 航空公司

我可能应该用更简单的模式在 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:

  1. Trips
  2. Legs
  3. Segments (A segment is a part of a leg and a trip contains multiple legs)
  4. Airports
  5. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟织青萝梦 2024-10-10 13:16:21

一般来说,保持你的联系有两种方式。

  • Trip hasMany Leg
  • Leg ownsTo Trip
  • Leg hasMany Segment
  • Segment ownsTo Leg

这将允许您访问如下模型:

$this->Leg->Segment->create();
$this->Segment->Leg->create();
$this->Segment->Leg->Trip->create();

Leg 和 Segment 也是如此。此外,CakePHP 模型的命名约定规定它们是单一的。 :)

Generally, keep your associations two-ways.

  • Trip hasMany Leg
  • Leg belongsTo Trip
  • Leg hasMany Segment
  • Segment belongsTo Leg

This will allow you to access models like so:

$this->Leg->Segment->create();
$this->Segment->Leg->create();
$this->Segment->Leg->Trip->create();

Same goes for Leg and Segment. Also, the naming convention for CakePHP models dictates that they be singular. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文