2017-01-04 11 views
1

私は基本的なウェブサイトを作るためにyii2で作業しています。yii2 hasmany()関数からデータを取得する

好きな動画をログオンしたときに読み込む必要があります。 ビデオ映像テーブルに格納されたデータベースで

は、 ユーザーがユーザーテーブルに格納され、 UserVideoJunctionは、ユーザとビデオとの間の関係を格納するジャンクションテーブルです。

3つのテーブルのモデルとCRUDを生成するのにGiiを使用すると、すべてのデータにアクセスして操作することができます。

しかし、問題は私がユーザーに関連するビデオを取得しようとするときに発生します。

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()機能によって返される内容を表示する方法を教えてください。

答えて

1

これを試してみてください:

$videos = $user->videos; 

またはこの:hasManyのの

$videos = $user->getVideos()->all(); 
2

使い方がよくUser Guideに説明されています。

getVideos()を呼び出すと、ActiveQueryインスタンスのみが返されます。あなたは何とかあなたの結果を得るためにそれを使用する必要があります。また

$videos = $user->getVideos()->all(); 

は、あなたがこのようにそれらをフィルタリングすることができます:

$videos = $user->getVideos() 
    ->where(['>', 'year', 2000]) 
    ->orderBy('id') 
    ->all(); 

基本的には、getVideos()後にあなたがフィルタリングすることができ、グループ

あなたは、多対多の関係ですべての行を取得することができます、カウント、ソート、find()を使用する場合と同じように、ActiveQueryで何かを行う。

関連する問題