Kohana 3 ORM - 逐个案例

Pie*_*rre 0 kohana kohana-3 kohana-orm kohana-db

我想使用ORM查询构建器实现此查询:

SELECT * FROM `products`
GROUP BY CASE `products`.`configurable` 
WHEN 'yes' THEN `products`.`id_configuration` 
ELSE `products`.`id` 
END
Run Code Online (Sandbox Code Playgroud)

我知道这有效:

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

但它返回一个mysql数据库结果,我宁愿有一个ORM列表,否则我将不得不在循环中实例化我的所有ORM对象,导致性能不佳......或者......?

可能吗?ORM'group_by'功能看起来非常有限......

bia*_*ron 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();
Run Code Online (Sandbox Code Playgroud)

或者,如果您在模型中使用它,您可以调用->as_object(get_class($this))->as_object($this).