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

必要な 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)

于 2013-04-30T04:28:27.590 に答える