0

2 レベルの深さのモデルから特定のフィールドを取得しようとしています。コンテナーの動作を使用していますが、最下層が正しく取得されていません。

コードは次のとおりです。

$this->Review->Behaviors->attach('Containable');
    $latestReviews = $this->Review->find('all', array(
        'contain' => array(
            'Business' => array(
                'fields' => array('Business.name'),
                'BusinessType' => array(
                    'fields' => array('BusinessType.url')
                )
            ),
        ),
        'fields' => array('overall'),
    ));

そして、それが返す配列:

array(
(int) 0 => array(
    'Review' => array(
        'overall' => '2'
    ),
    'Business' => array(
        'name' => 'Business Name',
        'business_type_id' => '1',
        'id' => '2012'
    )
))

ただし、ビジネス タイプ ID を提供するのではなく、BusinessType url フィールドを返したいと考えています。

どこが間違っているのか誰にもわかりますか?これはCakePHPのドキュメントと一致していると確信しています。

4

3 に答える 3

6

マニュアルの引用:

'fields'および'contain'オプションを使用する場合、クエリが直接または間接的に必要とするすべての外部キーを含めるように注意してください。

于 2012-10-24T19:54:42.747 に答える
0

「フィールド」オプションとフィールド リストのモデル名を削除する必要があると思います。

$this->Review->Behaviors->attach('Containable');
$latestReviews = $this->Review->find('all', array(
    'contain' => array(
        'Business' => array(
            'fields'       => array('name'),
            'BusinessType' => array(
                'fields' => array('url')
            )
        )
    )));
于 2012-10-24T19:50:02.240 に答える