我正在与yii2合作制作一个基本网站。
我需要在用户登录后加载喜欢的视频。
在数据库中 视频存储在视频表中, 用户存储在用户表中, UserVideoJunction是存储用户和视频之间关系的联结表。
当我使用Gii为3个表生成模型和CRUD时,我可以访问和操作所有数据。
但是当我尝试获取与用户相关的视频时会出现问题。
public function getUservideojunctions()
{
return $this->hasMany(Uservideojunction::className(), ['UserID' => 'UserID']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getVideos()
{
return $this->hasMany(Video::className(), ['P_ID' => 'VideoID'])->viaTable('UserVideoJunction', ['UserID' => 'UserID']);
}
上面的代码是自动生成的代码。
有些人可以告诉我如何显示getVideos()
函数返回的内容吗?
答案 0 :(得分:2)
调用getVideos()
仅返回ActiveQuery实例。你需要以某种方式使用它来获得你的结果。
您可以获得多对多关系中的所有行:
$videos = $user->getVideos()->all();
此外,您可以像这样过滤它们:
$videos = $user->getVideos()
->where(['>', 'year', 2000])
->orderBy('id')
->all();
基本上,在getVideos()
之后,您可以使用ActiveQuery进行过滤,分组,计数,排序,执行任何操作,就像使用find()
时一样。
答案 1 :(得分:1)
试试这个:
$videos = $user->videos;
或者这个:
$videos = $user->getVideos()->all();