0

MANY_MANY 関係を持つ Products と Interests を含む Yii アプリがあります。これらは明らかに、次の関係でマッピングされます。

            'interests'=>array(self::MANY_MANY, 'Interest', 'interest_product_assignment(product_id,interest_id)'),

次のように CDbCriteria を使用して Products をクエリしたいと思います。

$products = Product::model()->with('interests')->findAll($criteria);

このクエリは正常に機能しています。配列に格納されているIDを持つ特定の興味のみに制限するために、それを拡張する必要があります。私はこれが次のようなもので可能になるはずだと信じています:

    $products = Product::model()->with(
        'interests',
        array('condition' => {not_sure_what_to_put_here})
    )->findAll($criteria);

上記のクエリを完了する方法がわからず、しばらく探していました。これで何も見つからないわけではありませんが、掘り下げたものは何も理解できません。

誰でもこのクエリを完了する方法を見つけることができますか?

編集

私がTelvinの提案で試したこと:

    $products = Product::model()->with(
        'interests',
        array('condition' => "interests_interests.interest_id IN ($selectedInterestsString)")
    )->findAll($criteria);

クエリに「IN」ステートメントを追加していません。

4

1 に答える 1

2

提供された ID の配列:

$array_ids =    array('1','24','350','4609', ....)    
$array_ids_str = '"' . implode('","', array_values($array_ids)) . '"';

$products = Product::model()->with(array(
        'interests'=> array('condition' => "interest_id_column IN ($array_ids_str)"
    )))->findAll($criteria);
于 2013-10-22T03:21:31.820 に答える