表是
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'
),
);
}
在查询$building->administrators->find_all();
后,我收到错误消息:
Unknown column 'building_administrators.administrator_id' in 'on clause' [ SELECT ..
有什么方法可以解决这个问题吗?
我可以通过将管理员别名重命名为联系人来解决此问题,但是我必须使用$building->contacts->find_all()
进行查询,这样做并不好(例如我可能有管理员和经纪人)。
我也可以将contact_id重命名为数据库表中的administrator_id,但是DB结构错误了 - 我没有管理员表。
答案 0 :(得分:1)
尝试将'far_key' => 'contact_id'
添加到数组中。
一些背景知识:foreign_key
是关系描述中的关键字$this
对象,far_key
是外部对象在关系中的关键名
编辑:只是想添加Kohana,如果缺少必需的密钥,则根据别名(http://kohanaframework.org/3.3/guide-api/ORM#get)猜测自己的键名