2012-03-27 11 views
1

は、テーブルを持っているMANY_MANY関係上のYii条件を作る:どのよう

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

あなたの関係を正しく読んでいるなら、これはうまくいくはずです。それは条件付きの状態なら

いずれの場合においても
$res = Place::model()->with('movies')->findAll(array('condition'=>'movies.state =1')); 

、より高度なクエリオプション:) http://www.yiiframework.com/doc/api/1.1/CActiveRecord#find-detail

+0

私は理解しています:)感謝! – m15mike

1

のマニュアルを参照してください:

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

のYiiのバージョンによっては、削除することができます " : 'をparamsの配列キーに追加します。 それらについての情報を読んで、前の回答を最も良いものとしてマークしてください。