Yii关系:从另一个表中获取数据

时间:2012-03-29 00:38:21

标签: php mysql yii

我有电影桌& TblMovieVideos表和我有这个表的关系,所以我需要得到“youtube_id”形式TblMovieVideos其中“trailer = 1”

我认为我需要通过此代码获得结果,但这是错误的 错误:$model->tblMovieVideos[$model->id]->trailer = 1 ->youtube_id ??????

(已附加数据库图片)

电影型号:

public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            'tblCinemaMovies' => array(self::HAS_MANY, 'TblCinemaMovies', 'movie_id'),
            'tblDays' => array(self::HAS_MANY, 'TblDay', 'movie_id'),
            'tblGenres' => array(self::HAS_MANY, 'TblGenre', 'movie_id'),
            'tblMoviePhotos' => array(self::HAS_MANY, 'TblMoviePhoto', 'movie_id'),
            'tblMovieVideos' => array(self::HAS_MANY, 'TblMovieVideo', 'movie_id'),
            'tblShowtimes' => array(self::HAS_MANY, 'TblShowtime', 'movie_id'),
        );
    }

TblMoviesVideos模型:

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'movie' => array(self::BELONGS_TO, 'TblMovie', 'movie_id'),
        'tblSpotlights' => array(self::HAS_MANY, 'TblSpotlight', 'video_id'),
    );
}

enter image description here

enter image description here

索引: enter image description here

2 个答案:

答案 0 :(得分:2)

你可以通过以下方式获得所有带预告片的电影:

$movies=Movie::model()->with(array('tblMovieVideos'=>array('condition'=>'trailer = 1')))->findAll();

但是你想要的是youtube_id,试试这个:

$id = 1;//Id of the movie for which you are trying to find the video
$videos = TblMoviesVideos::model()->findAllByPk($id, 'trailer = 1');
foreach ($videos as $video)
{
    echo $video->youtube_id;
}

干杯。

答案 1 :(得分:0)

还有另一种获取相关数据的方法

步骤1:使用yii gii工具生成带有选中的Build relation复选框的模型。

这将自动生成relation()代码。

步骤2:现在获取关联数据执行此操作

foreach($data as $d){
 $d->relationOne->name;
}

relationOne来自model.php文件中的关系方法

我知道这不是一个很好的回答方式,请原谅我。 gii也是一个很好的建立关系,没有任何困难。

我会改进这个答案。后