如何在Kohana 3 ORM关系中指定两个键

时间:2011-11-17 17:30:47

标签: php orm kohana kohana-3 kohana-orm

我有一个“答案”表和一个“用户”表。我需要链接它们,但我必须在两个表上使用自定义键(即我在其中任何一个都没有使用'id')。两个表都有“facebook_id”字段连接它们。

在Answer模型中我定义了一个“belongs_to”用户,我可以定义Answer的foreign_key,但是如何说“在两个表上使用facebook_id链接对用户的回答”?

1 个答案:

答案 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