gpt4 book ai didi

php - Kohana 3 ORM : How to get data from pivot table? 和与此相关的所有其他表

转载 作者:可可西里 更新时间:2023-11-01 07:38:09 24 4
gpt4 key购买 nike

我正在尝试使用 ORM 访问存储在三个 mysql 表“users”、“items”和一个用于多对多关系的数据透视表中的数据:“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 设置为其他值。

关于php - Kohana 3 ORM : How to get data from pivot table? 和与此相关的所有其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com