0

私は映画と映画館の上映時間ガイドに取り組んでいます。

ショータイムテーブル(写真#1)とタイムテーブル(写真#2)があります

このような映画ページに上映時間のある映画館のリストを表示する必要があります

シネマ名:Time1 - time2 - time3

グランド シネマ:** 00:18 - 00:20 - 00:22 .... ets

私のコードは機能しません..そして、これをビューファイルに表示するために何を書くことができますか

エラー: アクティブなレコード クラス "movie" のリレーション "cinemas" が正しく指定されていません: 外部キーで指定された結合テーブル "{{showtime}}" がデータベースに見つかりません。

映画モデルには次の関係があります。

'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'
            )
        )
    );
}

映画コントローラ > 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.');

}

ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

1

したがって、モデルMovieShowtime、がありTimeます。あなたのMovieモデルには関係があります:

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

あなたのCinemaモデルには関係があります:

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

また、Cinemaモデルには名前付きスコープが必要です。

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.');

}

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

于 2012-04-07T18:21:37.250 に答える