我正在尝试使用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’ [ SELECTuser_item
.*
FROMuser_item
WHEREuser_id
= ‘1’
ANDitem_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设置为其他内容.