このクエリを Yii モデル指向のスタイルで書くと問題が発生しました。
質問、カテゴリ、国、および関係テーブルの 3 つのメイン テーブルがあります: question_has_categories、questions_has_countries。
今、国、カテゴリに属する質問を検索しようとしています。
通常のSQLステートメントで私は書きます:
SELECT q.id, q.question, c.name, co.name
FROM questions AS q,
categories AS c,
countries AS co,
questions_has_countries AS ta,
questions_has_categories AS qhc
WHERE
q.id = qhc.questions_id
AND c.id = qhc.categories_id
AND q.id = ta.questions_id
AND co.id = ta.countries_id
AND c.id = 1
AND co.id = 2
これはうまくいきます。Yii Active Record を使用して、次のように検索してみます。
$model = Questions::model()->with(
array( 'categories' => array (
'select' => 'name',
'condition' => 'categories.id=:cat_id',
'params' => array (':cat_id' => $_POST["Questions"]["categories"])
)
),
array( 'countries' => array (
'select' => 'name',
'condition' => 'countries.id=:cou_id',
'params' => array (':cou_id' => $_POST["Questions"]["countries"])
)
)
)->findAll(array ('select' => 'question'));
このコードは、国ではなく、カテゴリのみを考慮します (すべての国を返します。フィルター処理は行わず、絞り込みません)。
私は何を間違っていますか?
私の質問モデル関係関数は次のようになります:
public function relations()
{
return array('categories' => array(self::MANY_MANY, 'Categories', 'questions_has_categories(questions_id, categories_id)'),
'countries' => array(self::MANY_MANY, 'Countries', 'questions_has_countries(questions_id, countries_id)'),
);
}
助けてください:)ありがとう