0

我想用 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 db结果,我宁愿有一个ORM列表,否则我将不得不在一个循环中实例化我的所有ORM对象,导致性能不佳......或者......?

是否可以?ORM 'group_by' 函数看起来非常有限......

4

1 回答 1

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))or ->as_object($this)

于 2013-04-30T04:28:27.590 回答