Kohana ORM结构和别名不合适

时间:2013-07-23 07:23:01

标签: kohana kohana-3 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'          
        ),
    );
}

在查询$building->administrators->find_all();后,我收到错误消息: Unknown column 'building_administrators.administrator_id' in 'on clause' [ SELECT ..

有什么方法可以解决这个问题吗?

我可以通过将管理员别名重命名为联系人来解决此问题,但是我必须使用$building->contacts->find_all()进行查询,这样做并不好(例如我可能有管理员和经纪人)。

我也可以将contact_id重命名为数据库表中的administrator_id,但是DB结构错误了 - 我没有管理员表。

1 个答案:

答案 0 :(得分:1)

尝试将'far_key' => 'contact_id'添加到数组中。

一些背景知识:foreign_key是关系描述中的关键字$this对象,far_key是外部对象在关系中的关键名

编辑:只是想添加Kohana,如果缺少必需的密钥,则根据别名(http://kohanaframework.org/3.3/guide-api/ORM#get)猜测自己的键名