Php Kohana3ORM:如何从数据透视表中获取数据?还有其他所有的桌子
我正在尝试使用ORM访问存储在三个mysql表“users”、“items”和一个多对多关系的透视表“user\u item”中的数据 我听从了老师的指导 并尝试Php Kohana3ORM:如何从数据透视表中获取数据?还有其他所有的桌子,php,mysql,orm,kohana,Php,Mysql,Orm,Kohana,我正在尝试使用ORM访问存储在三个mysql表“users”、“items”和一个多对多关系的透视表“user\u item”中的数据 我听从了老师的指导 并尝试 $user = ORM::factory('user',1); $user->items->find_all(); $user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user-&
$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错误:
中的未知列“user\u item.id”
“订单条款”[选择用户项目
*
从user\u项
其中user\u id
='1'
和item_id
=''订购人
user\u项目
id
ASC限制1]“
这显然是错误的,因为Kohana试图按不存在的列对元素排序:user_item.id。此id不存在,因为此透视表的主键是其他两个表“users”和“items”的外键
正在尝试使用:
$user_item = ORM::factory('user_item', array('user_id' => $user, 'item_id' => $user->items))
->order_by('item_id', 'ASC');
没有区别,因为如果给出工厂的第二个参数,则似乎会忽略order\u by()
或任何sql查询
该查询的另一个明显错误是,项_id='',而它应该包含所有元素
因此,我的问题是如何访问数据透视表中存储的数据,实际上如何访问特定用户持有的所有项目,因为我甚至在这方面有问题
感谢您,默认情况下,Kohana的所有ORM模型都希望表的主键为“id”。您需要将模型中的$\u primary\u key设置为其他值。
$user\u item=ORM::factory('user\u item',array('user\u id'=>$user,'item\u id'=>$user->items))代码>
我认为需要提供一个item_id值,而不是一个对象数组
此外,要查找单个用户的所有条目,您应该能够执行以下操作:
$user\u items=ORM::factory('user\u item',array('user\u id'=>$user))代码>
这回答了你的问题吗?你为什么要做$user->items->find_all()
?可能您忘记了包含一个foreach
语句(或类似语句)来迭代find_all()
方法的结果。