Kohana 3 ORM: сложные запросы, эффективность

Итак, мы все знаем, что документация для Kohana 3 абсолютно ужасна. Итак, как я могу построить следующий запрос, где у меня есть модели "Player" и "Dragon"?

SELECT * FROM `dragons` JOIN `players` ON (`dragons`.`player_id` = `players`.`player_id`) WHERE `uid` IN (1,2,3) ORDER BY `dragons`.`id` ASC

я могу использовать ORM::factory('dragon')->join("players")->on("dragons.player_id", "=", "players.player_id") чтобы добраться до вступительной части, но я не могу сделать in пункт. Нет никаких in функция в Кохана 3-х ОРМ. Я попробовал where функция, но она помещает кавычки вокруг третьего параметра, поэтому мой список идентификаторов становится строкой, а запрос становится недействительным. Так что я могу сделать? Я не могу понять, как добавить пользовательские биты SQL в мои запросы загрузки ORM. Опять же, потому что документация не существует.

Единственный способ, о котором я могу думать прямо сейчас, - это просто загрузить всех соответствующих игроков, пройти через них и выбрать их драконов. Но это кажется действительно глупым - гораздо больше запросов, чем необходимо. Раньше я чувствовал, что использование ORM ужасно неэффективно в конце запросов, чтобы немного облегчить кодирование. Это правда?

1 ответ

Решение

ORM может выдавать несколько нежелательных запросов, но это также ускоряет время разработки и дает вам абстракцию (некоторые люди считают, что им больше не придется писать SQL вручную).

Большую часть времени я предпочитаю SQL в сложных веб-приложениях.

Однако сказать, что вы хотите, можно с помощью ORM от Kohana 3.


От The Pixel Developer.

where('field', 'IN', range(1, 3));

Это имеет то преимущество, что не имеет петли.:-)

Другие вопросы по тегам