我想用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'函数看起来非常有限…
你应该定义你想要的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)