Как поставить условие Yii на отношения Many_Many
Есть таблицы:
place (id, title, state);
movie (id, title, state);
schedule (place_id, movie_id, time);
используйте простые модели yii:
place.relations:
'movies' => array( self::MANY_MANY, 'movie',
'schedule(place_id,movie_id)',
'condition' => 'time > now()' ),
используйте простой контроллер yii:
$tmp = new Place();
$res = $tmp->findAll();
var_dump( $res[0]->movies );
yii возвращает полный список со статусом out:(
Как я могу получить фильмы с условием movie.state = 1?
2 ответа
Если я правильно читаю ваши отношения, это должно сработать.
$res = Place::model()->with('movies')->findAll(array('condition'=>'movies.state =1'));
В любом случае, обратитесь к документации для более сложных опций запроса:) http://www.yiiframework.com/doc/api/1.1/CActiveRecord
Если это условное состояние:
$state = $_POST['state'];
$res = Place::model()->with('movies')->findAll(array('condition'=>'movies.state=:m_state', 'params'=>array(':m_state'=>$state)));
В зависимости от версии Yii, вы можете удалить ':' в ключах массива params. Читайте о них и отметьте предыдущий ответ как лучший уже.