Помощь ассоциации в CakePHP - Пример поиска рейса - PullRequest
0 голосов
/ 23 ноября 2010

Tl; dr: (Я бы скорее научился ловить рыбу, чем кормить рыбу, но у меня возникают проблемы с обучением себя ассоциациям CakePHP с 5 таблицами DB)

Итак, я работаю над поиском рейсовпроект с базой данных человека.Он разработал базу данных с соответствующими внешними ключами, и я верю, что он хорошо поработал, потому что он работает с базами данных в крупной компании Силиконовой долины.

У нас есть эти таблицы в базе данных:

  1. Поездки
  2. Ноги
  3. Сегменты (Сегмент является частью участка, а поездка состоит из нескольких этапов)
  4. Аэропорты
  5. Авиакомпании

Вероятно, мне следовало бы сделать свой первый проект в CakePHP с более простой схемой, но на самом деле это не вариант, поэтому: каковы здесь правильные ассоциации?

Прямо сейчас у меня есть это:

Поездки имеет много ног;иностранный ключ trip_id в таблице ног

ноги принадлежат поездкам;внешний ключ trip_id в таблице ножек

Ноги имеет много сегментов;внешний ключ leg_id в таблице сегментов

И все.Ясно, что мне нужно больше для полноценного использования CakePHP (по крайней мере, я так думаю), и я думаю, что мне мешает дизайн базы данных (не гарантируется, что мой друг разработал ее оптимально).Я просто не знаю, как это сделать в аэропортах и ​​авиакомпаниях.

Я потратил несколько часов, погуглив и перечитывая книгу, которую я использую.Спасибо за любую помощь и ОБЩИЕ советы / мысли Ассоциации CakePHP.

1 Ответ

2 голосов
/ 23 ноября 2010

Как правило, сохраняйте свои ассоциации в двух направлениях.

  • Трип имеет много ног
  • Нога принадлежит к поездке
  • Нога имеет много сегментов
  • сегмент принадлежит кНога

Это позволит вам получить доступ к таким моделям:

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

То же самое относится к ноге и сегменту.Кроме того, соглашение об именах для моделей CakePHP требует, чтобы они были единичными.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...