2013-07-23 45 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,但後來數據庫結構是錯誤的 - 我沒有管理員表。

+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是外部對象在關係

編輯鍵名:只是想補充一點,Kohana中,如果需要的密鑰丟失,猜測她自己的基於別名的鍵名(http://kohanaframework.org/3.3/guide-api/ORM#get