Cakephp: HasOne Отношения - PullRequest
       27

Cakephp: HasOne Отношения

2 голосов
/ 22 декабря 2010

Я пытаюсь смоделировать следующее:

Путешествие имеет идентификатор, fromCity и toCity.

Моя база данных выглядит следующим образом:

Таблица путешествий:

id | fromCity | toCity
1    2           4
2    4           2

Таблица из города:

id  | name
2     paris
4     london     

У меня есть модели, определенные для города и для поездки.

В моем файле модели для поездки я хочуобъявите файл $ hasOne, чтобы преобразовать идентификатор fromCity в название города.

Я пытался следовать руководству по CakePHP на hasOne (http://book.cakephp.org/view/80/hasOne), но не могу понять, как решитьдва внешних ключа.

Может кто-нибудь объяснить мне, как var $hasone = ... должен искать этот случай?

Редактировать: Модели:

<?php class City extends AppModel { var $name='City';} ?> 

<?php class Journey extends AppModel { var $name='Journey'; /*var $hasOne=array(...)*/} ?>

Edit 2:

var $hasOne = array(
   'CityFrom' => array(
      'className'    => 'City',
      'conditions'   => 'Journey.fromAirport = CityFrom.id',
      'dependent'    => true,
      'foreignKey'  => 'id = Journey.fromCity'    ),
   'CityTo' => array (
      'className' => 'City',
      'conditions'   => 'Journey.toCity = CityTo.id',
      'dependent' => true,
      'foreignKey' => 'id = Journey.toCity'
   )
   );

Кажется, работает для первой записи таблицы поездок. Все остальные значения являются нулевыми. Я думаю, что проблема возникает из-за наличия в этом запросе двух столбцов с одинаковым именем.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2010

Как упоминала Рин, вам нужно использовать beLongsTo вместо hasOne. Вот пример о Множественных отношениях с одной и той же моделью из Cookbook. Надеюсь, это поможет.

0 голосов
/ 22 декабря 2010

Прежде всего, ваша ссылка ведет к 1.2 документам, вы, вероятно, скачали 1.3.

В 1.3 вы, вероятно, также должны использовать belongsTo на FromCity и ToCity моделях (но я могу ошибаться, давным-давно я использовал это:)

...