Когда таблицы связаны с MANY_MANY или HAS_MANY, Yii иногда может разбить один запрос на два оператора SQL. Я считаю, что это для эффективности, но это может испортить то, что вы пытаетесь сделать, так как запрос категорий происходит в другом операторе SQL, чем запрос контакта.
Решение состоит в том, чтобы использовать менее известное свойство CDbCriteria
, называемое together
. Если вы установите значение true, это заставит запрос выбирать из обеих таблиц в одном и том же операторе SQL. Тогда ваше условие вступит в силу.
Если вы всегда хотите, чтобы это произошло, добавьте это в отношение:
Categories' => array(self::MANY_MANY, 'Category', 'ContentCategory(id_content, id_category)','together'=>true),
Если вы хотите это только в случае $dataProvider
выше, добавьте его к параметрам, подобным этому:
'criteria'=>array(
'with'=>array(
'Categories'=>array(
'condition'=>'id_category=1'
),
),
'together'=>true,
),