Как поставить условие 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. Читайте о них и отметьте предыдущий ответ как лучший уже.

Другие вопросы по тегам