php – Kohana 3 ORM:如何从数据透视表中获取数据?以及所有其他表格

我正在尝试使用ORM来访问存储的数据,在三个
mysql表的“用户”,“项目”和多个关系的数据透视表中:’user_item’

我遵循了Kohana 3.0.x ORM: Read additional columns in pivot tables的指导

并尝试过

    $user = ORM::factory('user',1);
    $user->items->find_all();

    $user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items));
    if ($user_item->loaded()) {
        foreach ($user_item as $pivot) {
            print_r($pivot);
        }    
    }

但是我得到了SQL错误:

“Unknown column ‘user_item.id’ in
‘order clause’ [ SELECT user_item.*
FROM user_item WHERE user_id = ‘1’
AND item_id = ” ORDER BY
user_item.id ASC LIMIT 1 ]”

这显然是错误的,因为Kohana试图通过不存在的列来排序元素:user_item.id.此ID不存在,因为此数据透视表的主键是其他两个表的“外键”,“用户”和“项目”.

试图使用:

$user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items))
                    ->order_by('item_id', 'ASC');

没有区别,因为如果给出了工厂的第二个参数,似乎会忽略order_by()或任何sql查询.

该查询的另一个明显错误是item_id =”,它应该包含所有元素.

所以我的问题是如何才能访问存储在数据透视表中的数据,实际上我如何才能访问特定用户持有的所有项目,因为我甚至遇到了问题?

谢谢

最佳答案 默认情况下,所有Kohana的ORM模型都希望表的主键为“id”.您需要在模型中将$_primary_key设置为其他内容.

点赞