У меня есть 3 таблицы, play, user и user_play, которая является таблицей соединений для других (все модели были сгенерированы с помощью gii, и они имеют отношения и так на). Мне нужно получить данные из таблицы воспроизведения на основе пользователя (где user id = x) и отправить его в gridview.Yii2 Получение данных из 2 таблиц, подключенных через таблицу соединений в gridview
Я хотел бы также отображать некоторые данные из таблицы user_play, как атрибут группы и подсчет всех игроков подписались на игру:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'name',
'date',
'user_play.group',
'user_play.userCount',
'time',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
У меня есть это соотношение в моем пользователе и играть таблицу:
public function getUserPlays()
{
return $this->hasMany(UserPlay::className(), ['user_id' => 'id']);
}
у меня также есть подобные отношения в пользователя и играть таблицу:
//user table
public function getPlay()
{
return $this->hasMany(Play::className(), ['id' => 'play_id'])
->via('userPlays');
}
//play table
public function getUser()
{
return $this->hasMany(User::className(), ['id' => 'user_id'])
->via('userPlays');
}
Я не знаю, как использовать два вышеупомянутых отношения, может кто-нибудь объяснить это мне, или, возможно, разместить ссылку с некоторой информацией, пожалуйста? Не могу найти ничего в интернетах.
Но эта строка кода получает меня, что я хочу, что данные из игрового стола для конкретного пользователя:
$plays = Play::find()
->joinWith(['userPlays'])
->where(['user_play.user_id' => Yii::$app->user->id])
->all();
Но когда я пытаюсь поставить этот вывод в поставщика данных, я получаю сообщение об ошибке : Call to a member function getCount() on a non-object
Как я могу отправить эти данные в dataprovider gridview и отобразить его? Или, может быть, есть более простой способ получить данные, которые я хочу? Пожалуйста помоги.
Как именно вы хотите отобразить его? Также добавьте код рендеринга GridView. – arogachev
Извините, отредактировал вопрос, в основном все атрибуты таблицы Play с некоторыми атрибутами таблицы user_play. – vrt1515
Не могли бы вы добавить структуру таблиц и полную трассировку стека? – arogachev