2013-04-29 3 views
0

Я хотел бы добиться этого запроса с застройщиком ORM запросов:Kohana 3 ORM - группы случае

SELECT * FROM `products` 
GROUP BY CASE `products`.`configurable` 
WHEN 'yes' THEN `products`.`id_configuration` 
ELSE `products`.`id` 
END 

Я знаю, что это работает:

$products = DB::query(Database::SELECT, ' 
    SELECT * FROM `products` 
    GROUP BY CASE `products`.`configurable` 
    WHEN 'yes' THEN `products`.`id_configuration` 
    ELSE `products`.`id` 
    END 
')->execute(); 

Но он возвращает результат MySQL БД , и я предпочел бы иметь список ORM, иначе мне придется внедрить все объекты ORM в цикле, что приведет к плохой производительности ... или ...?

Возможно ли это? Функция ОРМ «group_by» выглядит очень ограниченным ...

ответ

5

Вы должны определить, какой из БД результат вы хотите:

$products = DB::query(Database::SELECT, ' 
    SELECT * FROM `products` 
    GROUP BY CASE `products`.`configurable` 
    WHEN 'yes' THEN `products`.`id_configuration` 
    ELSE `products`.`id` 
    END 
') 
->as_object('Model_Product') // !! 
->execute(); 

Или, если вы используете его в модели, вы можете вызвать ->as_object(get_class($this)) или ->as_object($this).

+0

Блестящий. Вы просто сделали мой день :) – Piero