我在制作电影&电影放映时间指南。
我有showtime表(照片#1),我有时间表(照片#2)
我需要在电影页面中显示带有放映时间的电影院列表
影院名称:时间1 - 时间2 - 时间3
Grand Cinema:** 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'
)
)
);
}
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 :(得分:1)
因此,您有模型Movie
,Showtime
,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.');
}
像这样的东西。应该进行测试。
答案 1 :(得分:1)
你必须为MANY_MANY关系建立一个关联表