Как сделать условие 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 возвращает полный список со статусом выхода :(

Как получить фильмы с условием movie.state = 1?


person m15mike    schedule 27.03.2012    source источник


Ответы (2)


Если я правильно читаю ваши отношения, это должно сработать.

$res = Place::model()->with('movies')->findAll(array('condition'=>'movies.state =1'));

В любом случае обратитесь к документации, чтобы узнать о дополнительных параметрах запроса :) http://www.yiiframework.com/doc/api/1.1/CActiveRecord#find-detail

person adamors    schedule 27.03.2012

Если это условное состояние:

$state = $_POST['state'];
$res = Place::model()->with('movies')->findAll(array('condition'=>'movies.state=:m_state', 'params'=>array(':m_state'=>$state)));

В зависимости от версии Yii вы можете удалить ':' в ключах массива params. Прочтите о них и отметьте предыдущий ответ как лучший.

person amurNinja    schedule 26.04.2012