2013-04-29 46 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对象,导致性能不佳......或...?

可能吗?在ORM“GROUP_BY”功能看起来非常有限......

回答

5

你应该定义你想要什么样的DB的结果:

$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 2013-04-30 06:45:57