2013-07-23 3 views
0

ТаблицыKohana ORM структуры и псевдоним неудачников

buildings (id) 
contacts(id) 
building_administrators (id, building_id, contact_id) 

Модель

Model_Building { 
    protected $_has_many = array(
     'administrators' => array(
      'model' => 'Contact', 
      'through' => 'building_administrators', 
      'foreign_key' => 'building_id'   
     ), 
    ); 
} 

После quering $building->administrators->find_all(); я получаю ошибку: Unknown column 'building_administrators.administrator_id' in 'on clause' [ SELECT ..

Есть ли способ решить эту проблему?

Я могу решить это, переименовав псевдоним администратора в контакты, но тогда я должен запросить $building->contacts->find_all(), и это не хорошо (может быть, у меня есть администраторы и брокеров, например).

Я также могу переименовать contact_id в administrator_id в таблице базы данных, но тогда структура DB неверна - у меня нет таблицы администраторов.

+1

Попробуйте добавить ''far_key' => 'contact_id',' к массиву. Некоторая предыстория: 'foreign_key' - это имя ключа' $ this' объекта в описании отношения, 'far_key' - это ключевое имя, которое имеет внешний объект в отношении. – AmazingDreams

+0

Отлично! Теперь .. как я могу дать вам свои баллы? – Bob0101

+0

Я поставил свой комментарий в ответ;) – AmazingDreams

ответ

1

Попробуйте добавить 'far_key' => 'contact_id' в массив.

Некоторые фона: foreign_key является ИМЯКЛАВИШИ $this объект имеет в описании отношений, far_key является ИМЯКЛАВИШИ внешний объект имеет в отношениях

EDIT: Просто хотел бы добавить, что Кохана, если требуемые ключи отсутствуют, (http://kohanaframework.org/3.3/guide-api/ORM#get)