Я почти уверен, что это невозможно, но то, что вы хотите сделать, может быть достигнуто другим способом.Проверьте следующее из Руководство :
Мы можем использовать параметры динамического реляционного запроса как с (), так и с параметром с.Динамические параметры будут перезаписывать существующие параметры, как указано в методе Relations ()....
Таким образом, ваш запрос может выглядеть примерно так (если мы хотим использовать подход с активной загрузкой):
$param='something';
$obj=SomeModel::model()->with(array(
'rel'=>array('condition'=>'some conditions AND field_name=:param',
'params' => array(':param' => $param))
))->findAll();
// some more code
$obj->rel->attributeOne;
Или при использовании подхода с отложенной загрузкой для выполнения реляционныхquery:
$param='something';
$obj=SomeModel::model()->findByPk(1);
$rels=$obj->rel(array('condition'=>'some conditions AND field_name=:param',
'params' => array(':param' => $param)
));
Надеюсь, это поможет.Прочитайте связанное руководство.При необходимости попросите разъяснений.
Редактировать:Как уже упоминалось в комментариях ниже, some conditions
может быть помещено в отношение модели, и при запросе необходимо указать только дополнительные условия.Дополнительное условие автоматически AND
'переходит к условию отношения модели.Это кажется противоречащим документации.В любом случае можно использовать следующий код:
// In the model's relation:
'rel'=>array(self::MANY_MANY, 'MyClass','table(id_1,id_2)',
'condition'=>'some conditions');
Контроллер:
$param='something';
$obj=SomeModel::model()->with(array(
'rel'=>array('condition'=>'field_name=:param',
'params' => array(':param' => $param))
))->findAll();
Также см. этот комментарий в связанной документации