2012-04-07 29 views
0

我從事電影&電影院放映時間指南。PHP Yii Relations:影視&放映時間

,我有欣欣表(照片#1),我有次表(照片#2)

,我需要顯示在影片頁面放映影院的名單像這樣

電影名稱:時間1 - 時間2 - 時間3

的Grand Cinema:** 00:18 - 00:20 - 00: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

首先,你必須決定你是否有Showtimes模型或Showtime。這是你的應用程序中非常不同的模型。其次嘗試堅持相同的命名風格,所以你的代碼更具可讀性。三,請仔細閱讀關係活動記錄教程:http://www.yiiframework.com/doc/guide/1.1/en/database.arr – Johnatan 2012-04-07 16:17:59

+0

我讀過了,但我需要解決方案..幫我看看 – Abudayah 2012-04-07 17:00:06

回答

1

所以,你必須車型MovieShowtimeTime。 你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.'); 

} 

就是這樣。應該通過測試。

+0

thx ..但是我怎麼能在查看文件中顯示數據? – Abudayah 2012-04-10 21:04:08

+0

我也有這個錯誤=> 活動記錄類「電影」中的關係「電影院」沒有正確指定:在數據庫中找不到外鍵給出的連接表「{{showtime}}」。 – Abudayah 2012-04-10 21:07:37

1

你必須爲MANY_MANY衝突產生一個聯繫表