我有一个“答案”表和一个“用户”表。我需要链接它们,但我必须在两个表上使用自定义键(即我在其中任何一个都没有使用'id')。两个表都有“facebook_id”字段连接它们。
在Answer模型中我定义了一个“belongs_to”用户,我可以定义Answer的foreign_key,但是如何说“在两个表上使用facebook_id链接对用户的回答”?
答案 0 :(得分:2)
可行的唯一方法是将模型_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