0

次の結合構造は、CakePHP の検索で動作するように正しくフォーマットされていますか? 条件と一緒に使用すると、これは機能していないようで、私の腸は構造がオフになっていることを教えてくれます。私は参加するのが初めてなので、助けていただければ幸いです。

'joins' => array(
    (int) 0 => array(
        'table' => 'cheeses_milk_sources',
        'alias' => 'CheesesMilkSource',
        'type' => 'INNER',
        'conditions' => array(
            (int) 0 => 'Cheese.id = CheesesMilkSource.cheese_id'
        )
    ),
    (int) 1 => array(
        'table' => 'milk_sources',
        'alias' => 'MilkSource',
        'type' => 'INNER',
        'conditions' => array(
            (int) 0 => 'CheesesMilkSource.milk_source_id = MilkSource.id',
            'CheesesMilkSource.milk_source_id' => '1'
        )
    )
),
'conditions' => array(
    'AND' => array(
        (int) 0 => array(
            'Cheese.cheese_producer_id' => (int) 35
        ),
        (int) 1 => array(
            'Cheese.active' => (int) 1
        )
    )
),
4

1 に答える 1

1

ややこしい部分は

    'conditions' => array(
        (int) 0 => 'CheesesMilkSource.milk_source_id = MilkSource.id',
        'CheesesMilkSource.milk_source_id' => '1'
    )

キーのない配列要素と に等しいキーを持つ配列要素を混在させていますCheesesMilkSource.milk_source_id

結合で2つの条件を指定する必要がある場合は、次のようにします

    'conditions' => array(
        'CheesesMilkSource.milk_source_id = MilkSource.id AND CheesesMilkSource.milk_source_id = 1'
    )

おそらく次のスニペットも同じように機能するでしょうが、現時点では確認できず、テストすることもできません。コメントで機能する場合はお知らせください。

    'conditions' => array(
        'CheesesMilkSource.milk_source_id = MilkSource.id',
        'CheesesMilkSource.milk_source_id = 1'
    )

ただし、テーブルを結合しているのでCheesesMilkSource.milk_source_id = 1、検索の一般的な条件を入力する必要があります。

'conditions' => array(
   'Cheese.cheese_producer_id' => 35,
   'Cheese.active' => 1,
   'CheesesMilkSource.milk_source_id' => 1,
)

ANDこれが条件を結合するデフォルトの方法であるため、指定する必要がないことに注意してください。

于 2013-08-30T04:05:40.367 に答える