Кохана 3.1 обр. Как сделать эту связь has_one?

У меня 2 модели: Address и Country. Теперь каждый адрес имеет ровно одну страну. Итак, модель Address имеет:

protected $_has_one = array('country' => array(
    'model' => 'Country',
    'foreign_key' => 'code',
));

Я загружаю Address объект:

$addr = ORM::factory('Address', 1);
$country = $addr->country->find();

Но $country всегда содержит первую запись вместо связанной записи из таблицы Country.
Я что-то не так делаю? Если да, то как правильно?

EDIT:
таблица Country имеет PK code и не имеет FK.
таблица Address имеет PK id и FK country_code


person spajak    schedule 10.07.2011    source источник
comment
1 адрес имеет ровно одну страну, а 1 страна принадлежит многим адресам — это one-to-many отношение, а не one-to-one   -  person zerkms    schedule 10.07.2011
comment
Но Country не может принадлежать чему-либо, поскольку это единственная таблица полезности со всеми известными странами, на которую ссылаются многие другие таблицы.   -  person spajak    schedule 10.07.2011
comment
пока одна страна принадлежит любому количеству адресов - это one-to-many отношение. ртфм   -  person zerkms    schedule 10.07.2011
comment
ты прав. Я отредактировал тему.   -  person spajak    schedule 10.07.2011
comment
Используйте $addr->country (без find()).   -  person biakaveron    schedule 11.07.2011


Ответы (1)


Ваше свойство has_one должно быть следующим:

protected $_has_one = array('country' => array(
  'model' => 'Country',
  'foreign_key' => 'country_code',
));

Внешний ключ — это ключ в вашей таблице текущей модели, который связан с первичным ключом связанной модели.

person Luwe    schedule 16.08.2011