1

私は協会を持っています:

  • 製品 -> hasMany -> 製品オプション
  • 製品 -> hasMany -> ProductImage

ProductOption.id で ProductImage を含む商品データを検索したい

私がこれを行うとき:

$this->Basket->Product->ProductOption->find('first',array(
    'contain' => array(
        'Product' => array(
            'ProductOption' => array(
                'conditions' => array('ProductOption.id = '.$id)
            ),
            'ProductImage'
        )
    )
));

私はこれを得る:

array(
    'ProductOption' => array(
        'id' => '46',
        'product_id' => '9',
    ),
    'Product' => array(
        'id' => '9',
        'name' => 'Some product',
    )
)

これは私が欲しいもののほとんどですが、「ProductImage」は含まれていません。これを配列で取得するにはどうすればよいですか?

4

1 に答える 1

0

再帰を使いすぎていると思います。Product で Containable を使用している場合は、ProductOption ではなく、次のようにクエリを作成します。

$this->Basket->Product->find('first',array(
  'contain' => array(        
    'ProductOption' => array(
            'conditions' => array('ProductOption.id = '.$id)
    ),
    'ProductImage'
  )    
));

「含む」配列で Product を使用する必要はありません。すでに推測されています。

(私はこれを試していませんが、ほぼ確実です)

于 2012-11-24T19:25:10.310 に答える