2012-04-07 9 views
0

私は映画を仕事しています&映画館の上映会のガイドです。PHP Yii関係:映画&映画館&展示台

と私はショータイムテーブル(写真#1)と私は時間を持っているテーブル(写真#2)

と、私はこの

シネマ名のような映画のページでは上映時間と映画館のリストを表示する必要があります。 TIME1 - TIME2 - TIME3

グランドシネマ:**午後12時18分 - 午前0時20 - 午後12時22 .... ETS

私のコードは..動作していないと私はこれを表示するために何を書くことができますビューファイル内

Error: The relation "cinemas" in active record class "movie" is not specified correctly: the join table "{{showtime}}" given in the foreign key cannot be found in the database.

作品のモデルには関係があります。

'cinemas' => array(self::MANY_MANY, 'Cinema', '{{showtime}}(movie_id, cinema_id)') 

シネマモデルが関係を持っています

'times' => array(self::MANY_MANY, 'Time', '{{showtime}}(cinema_id, time_id)') 

シネマモデルは範囲を命名しておく必要があります

public function times_by_movie($movie_id) { 
    return $this->with(
     array(
      'times'=>array(
       'condition'=>'`movie_id` = :movie_id', 
       'params' => array(':movie_id'=>$movie_id), 
       'joinType' => 'INNER JOIN' 
      ) 
     ) 
    ); 
} 

MoviesController> actionView

public function actionView($id) { 
    $movie = Movie::model()->with(
     array(
      'cinemas'=>array(
       'scopes'=>array(
        'times_by_movie'=>$id 
       ) 
      ) 
     ) 
    )->findByPk($id); 
    if (!$movie) 
     throw new CHttpException(404, 'Movie not found.'); 

} 

enter image description here enter image description here

+1

ファーストをassosiationテーブルを作成する必要があります。それはあなたのアプリケーションではかなり異なるモデルです。次に同じ命名スタイルに固執しようとするので、あなたのコードは少し読みやすくなります。第三に、慎重にRelational Active Recordチュートリアルを読んでください:http://www.yiiframework.com/doc/guide/1.1/en/database.arr – Johnatan

+0

私はそれを読んでいますが、解決策が必要です。私を助けてください – Abudayah

答えて

1

だからあなたはモデルMovieShowtimeTimeを持っています。

'times' => array(self::MANY_MANY, 'Time', '{{showtime}}(cinema_id, time_id)') 

また、あなたのCinemaモデルに名前が付いているはず範囲: - >actionViewあなたがすべき

public function times_by_movie($movie_id) { 
    return $this->with(
     array(
      'times'=>array(
       'condition'=>'`movie_id` = :movie_id', 
       'params' => array(':movie_id'=>$movie_id), 
       'joinType' => 'INNER JOIN' 
      ) 
     ) 
    ); 
} 

MoviesController

'cinemas' => array(self::MANY_MANY, 'Cinema', '{{showtime}}(movie_id, cinema_id)') 

あなたCinemaモデルは関係があります。 あなたMovieモデルが関係を持っています持っている:

public function actionView($id) { 
    $movie = Movie::model()->with(
     array(
      'cinemas'=>array(
       'scopes'=>array(
        'times_by_movie'=>$id 
       ) 
      ) 
     ) 
    )->findByPk($id); 
    if (!$movie) 
     throw new CHttpException(404, 'Movie not found.'); 

} 

このようなものです。しかし、テストする必要があります。

+0

thx ..どのように私はビューファイルにデータを表示できますか? – Abudayah

+0

私もこのエラーがあります。> アクティブなレコードクラス "movie"の "cinemas"の関係が正しく指定されていません:外部キーで与えられた結合テーブル "{{showtime}}"がデータベースに見つかりません。 – Abudayah

1

あなたはMANY_MANYのralationshipのためにあなたが上映モデルやショータイムを持っているかどうかを判断する必要があるすべての

関連する問題