Извините, что задали все эти вопросы о Кохане. Их обычно игнорируют. Кажется, я просто нашел ошибку. Я делаю соединение между двумя таблицами, которые напрямую не связаны.Ошибка в Kohana 3 ORM?
$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, но это дает мне-из-за соединением. Это ошибка в библиотеке ORM? Должен ли я использовать другой метод для ограничения моих результатов запроса? Я действительно не хочу делать два отдельных запроса, когда я загружаю все id bar
, а затем загружаю его foo
, но похоже, что я должен.
Вы пробовали ORM отношения (http://kohanaframework.org/guide/tutorials.orm)? Что-то вроде foreach ($ foo-> bars as $ bar) {...} – biakaveron
Таблицы не связаны, кроме как косвенно. Они разделяют отношения с другой таблицей. Поэтому моя альтернатива заключается в том, чтобы сначала загружать идентификаторы из таблицы, но я бы предпочел. – Tesserex