Как сделать Yii условием для отношений Many_Many - PullRequest
1 голос
/ 27 марта 2012

есть таблицы:

    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?

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

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

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

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

1 голос
/ 27 апреля 2012

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

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

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

...