Добрый день.
Бьюсь уже который день.
Имеем модель таблицы Video2user который хранит user_id и video_id. Также есть модель таблицы Video в которой есть поля id, code, party.
Требуется именно через Active Record получить Code из базы video где например party = 2.
Если на чистом sql то это выглядит так
select v.code
from video2user v2u, video v
where v2u.video_id = v.id
and v.party = 2
and v2u.user_id = :user_id
order by v2u.video_id
Так все работает, но почему именно Active Record - потому что полученную модель я использую в классе Pagination.
Итак что я делаю. В моделе Video2user создаю связь с моделью Video
public function getVideo(){
return $this->hasOne(Video::className(), ['id' => 'video_id'])->where(['party' => 2]);
}
И в контроллере вызываю
$query2 = Video2user::find()->where(['user_id' => 5555])->with('video')->all();
Мне возвращается все данные по этому id пользователя, единственное только что там где party = 2 - добавляется массив второго уровня. А необходимо чтобы выбирались именно только те записи где party = 2 и ничего лишнего. Чтобы было удобно работать с Pagination.