很抱歉问了关于 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 库中的错误吗?我应该使用不同的方法来限制我的查询结果吗?我真的不想在加载所有bar
s id 的地方执行两个单独的查询,然后foo
以这种方式加载我的 s,但看起来我必须这样做。