0
我有一個「答案」表和「用戶」表。我需要鏈接它們,但我必須在兩個表上使用自定義鍵(即,我沒有在其中任何一箇中使用'id')。兩個表都有連接它們的「facebook_id」字段。如何指定的Kohana 3 ORM的關係這兩個鍵
在回答模型我定義了一個「belongs_to的」用戶,我可以定義答案的foreign_key,但我怎麼能說「使用facebook_id兩個表的鏈接應答用戶」?
我有一個「答案」表和「用戶」表。我需要鏈接它們,但我必須在兩個表上使用自定義鍵(即,我沒有在其中任何一箇中使用'id')。兩個表都有連接它們的「facebook_id」字段。如何指定的Kohana 3 ORM的關係這兩個鍵
在回答模型我定義了一個「belongs_to的」用戶,我可以定義答案的foreign_key,但我怎麼能說「使用facebook_id兩個表的鏈接應答用戶」?
看來這是唯一可行的方式是改變你的模型_primary_key
到facebook_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