我想使用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'功能看起来非常有限......
答案 0 :(得分: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)
。