2011-11-17 19 views
0

我有一個「答案」表和「用戶」表。我需要鏈接它們,但我必須在兩個表上使用自定義鍵(即,我沒有在其中任何一箇中使用'id')。兩個表都有連接它們的「facebook_id」字段。如何指定的Kohana 3 ORM的關係這兩個鍵

在回答模型我定義了一個「belongs_to的」用戶,我可以定義答案的foreign_key,但我怎麼能說「使用facebook_id兩個表的鏈接應答用戶」?

回答

2

看來這是唯一可行的方式是改變你的模型_primary_keyfacebook_id

一旦ORM類結構,你會看到表的調查都加入了像這樣

elseif (isset($this->_belongs_to[$column])) 
    { 
     $this->_load(); 

     $model = $this->_related($column); 

     // Use this model's column and foreign model's primary key 
     $col = $model->_table_name.'.'.$model->_primary_key; 
     $val = $this->_object[$this->_belongs_to[$column]['foreign_key']]; 

     $model->where($col, '=', $val)->find(); 

     return $model; 
    } 

正如你提到你可以使用

protected $_belongs_to = array('user' => array('foreign_key' => 'facebook_id') 

但是,這將導致

answers.id = users.facebook_id 

但是,如果你改變從ID的回答主鍵facebook_id像這樣

protected $_primary_key = 'facebook_id'; 

然後,當然最終的查詢會導致

answers.facebook_id = users.facebook_id