1

以下のCakephpカスタムクエリのネストされた配列を取得しようとしています:

$this->query("
                SELECT *
                FROM group_buys GroupBuy
                LEFT JOIN products Product
                ON Product.id = GroupBuy.product_id
                LEFT JOIN group_buy_users GroupBuysUser
                ON GroupBuysUser.group_buy_id = GroupBuy.id
                LEFT JOIN group_buy_images GroupBuyImage
                ON GroupBuyImage.group_buy_id = GroupBuy.id
                LEFT JOIN product_details ProductDetail
                ON ProductDetail.product_id = Product.id
                LEFT JOIN specifications Specification
                ON Specification.id = ProductDetail.specification_id
                LEFT JOIN specification_categories SpecificationCategory
                ON SpecificationCategory.id = Specification.specification_category_id
                WHERE GroupBuy.id = {$id}
            ");

これに関する問題は、GroupBuy テーブルの行の値が繰り返されることを明らかに望んでいない冗長なデータが発生することです。

LEFT JOINED テーブルに Cake のカスタムクエリを使用した以前のテーブルよりも多くの行がある場合、ネストされた配列を持つ方法はありますか?

これは find recursive = 2 で実行できることはわかっていますが、カスタム クエリでこれを実現したいと考えています。

4

1 に答える 1

0

コンテナブルを使ってみましたか?

$this->GroupBuy->Behaviors->attach('Containable');

$this->GroupBuy->find('all', array(
    'conditions' => array('GroupBuy.id' => $id),
    'contain' => array(
        'Product' => array(
            'ProductDetail' => array(
                'Specification' => array(
                    'SpecificationCategory'
                )
            )
        ),
        'GroupBuysUser',
        'GroupBuyImage'
    ),
));
于 2012-12-04T13:20:50.347 に答える