【发布时间】:2010-12-13 00:09:39
【问题描述】:
很抱歉问了关于 Kohana 的所有这些问题。他们通常会被忽略。我想我刚刚发现了一个错误。我正在连接两个不直接相关的表。
$results = ORM::factory('foo')->join("bar")->on("foo.foreign_id", "=", "bar.id");
这会生成一个不明确解析表名的查询:
SELECT * FROM `foo` JOIN `bar` ON (`foo`.`foreign_id` = `bar`.`id`)
这给了(在 phpMyAdmin 中)一个如下所示的表:
id time foreign_id blah_int id baz
4 1291851245 3 0 3 52501504
注意有两个id 列,一个用于foo 表,一个用于bar。这是一个真正的问题。因为现在,在我的结果中,如果我循环...
foreach ($results as $result) {
echo $result->id; // prints 3!!!
}
因为我的结果应该是 foo 对象,所以我希望得到 4 的 id,但由于加入,它给了我 3。这是 ORM 库中的错误吗?我应该使用不同的方法来限制我的查询结果吗?我真的不想做两个单独的查询,我加载所有bars id,然后以这种方式加载我的foos,但看起来我必须这样做。
【问题讨论】:
-
你试过ORM关系(kohanaframework.org/guide/tutorials.orm)吗?像 foreach($foo->bars as $bar) {...}
-
这些表不相关,除非是间接相关。他们与另一个表共享关系。所以我的替代方法是先从表中加载共同的 id,但我宁愿不这样做。
标签: orm kohana-3 kohana-orm