У меня есть модель Certificates, у которой есть внешний ключ application_id другой модели под названием Application. Таким образом, каждый сертификат принадлежит одному приложению.
Теперь возникла ситуация, когда я хотел бы показать все сертификаты существующего пользователя. Идентификатор пользователя существует внутри модели приложения, например user_id.
Это запрос
SELECT * FROM `certificates`
inner join applications b ON
application_id = b.id where b.user_id = 7
Теперь, основываясь на записях, полученных из вышеуказанного запроса, я хотел бы показать некоторые столбцы сертификатов и некоторые из приложений, использующих представление сетки. Но по некоторым причинам, если записей больше одной, я не получаю данные столбца из приложения.
<?php Pjax::begin(); ?> <?= GridView::widget([
'dataProvider' => $dataProvider,
// 'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'application_id',
'verified_application_file_path',
'certificate_name',
'application.name',
'application.user_id',
[
'attribute' => 'creation_date',
'format' => ['date', 'php:d/m/Y']
],
[
'attribute' => 'expiry_date',
'format' => ['date', 'php:d/m/Y']
],
],
]); ?>
<?php Pjax::end(); ?></div>
В приведенной выше сетке отображается имя и идентификатор пользователя, если возвращается одна запись, в противном случае отображается «Не задано». Я не уверен, почему application.name и application.user_id не работают при получении более одной записи.
Вот мой запрос с использованием yii2
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search_vendor_certificates($user_id)
{
$query = ApplicationCertificates::find()->joinWith('application b',true , 'INNER JOIN')->where(["b.user_id"=>$user_id]);
// add conditions that should always apply here
$dataProvider = new \yii\data\ActiveDataProvider([
'query' => $query,
]);
return $dataProvider; }
Буду признателен, если кто-нибудь скажет мне, в чем заключается ошибка, которую я делаю при отображении правильных атрибутов модели приложения.