2013-04-29 53 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