MANY_MANY Yii查询限制相关记录列表

时间:2013-10-21 21:29:43

标签: php sql yii many-to-many

我有一个Yii应用程序,其中包含具有MANY_MANY关系的产品和兴趣。显然,这些映射具有以下关系:

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

我希望使用CDbCriteria查询产品,如下所示:

$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”语句。

1 个答案:

答案 0 :(得分: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);