【问题标题】:Kohana 3 ORM - group by caseKohana 3 ORM - 按案例分组
【发布时间】:2013-04-29 15:19:16
【问题描述】:

我想用 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' 函数看起来非常有限...

【问题讨论】:

    标签: kohana kohana-3 kohana-orm kohana-db


    【解决方案1】:

    你应该定义你想要什么样的数据库结果:

    $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)

    【讨论】:

    • 太棒了。你让我很开心:)
    猜你喜欢
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多