Получение данных из функции yii2 hasmany ()

Я работаю с yii2, чтобы сделать основной сайт.

Мне нужно загружать пользователям понравившиеся видео, когда они вошли в систему.

В базе данных
Видео хранятся в видео таблице,
Пользователи хранятся в пользовательской таблице,
UserVideoJunction — это таблица соединений, в которой хранятся отношения между пользователями и видео.

Когда я использую Gii для генерации моделей и CRUD для 3 таблиц, все в порядке, я могу получить доступ ко всем данным и манипулировать ими.

Но проблема возникает, когда я пытаюсь получить видео, связанные с пользователем.

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

Решение

Использование hasMany хорошо объясняется в Гид пользователя.

призвание getVideos() возвращает только экземпляр ActiveQuery. Вы должны использовать это как-то, чтобы получить свои результаты.

Вы можете получить все строки в вашем отношении многие ко многим:

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

Кроме того, вы можете отфильтровать их так:

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

В основном после getVideos() вы можете фильтровать, группировать, считать, сортировать, делать что-нибудь с ActiveQuery, так же, как вы делаете при использовании find(),

2

Другие решения

Попробуй это:

$videos = $user->videos;

Или это:

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

По вопросам рекламы [email protected]