Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Kohana3ORM:如何从数据透视表中获取数据?还有其他所有的桌子_Php_Mysql_Orm_Kohana - Fatal编程技术网

Php Kohana3ORM:如何从数据透视表中获取数据?还有其他所有的桌子

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-&

我正在尝试使用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->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()
方法的结果。