Saya memiliki model Sertifikat yang memiliki kunci asing application_id dari model lain yang disebut Aplikasi. Jadi setiap sertifikat milik satu aplikasi.
Sekarang ada situasi di mana saya ingin menampilkan semua sertifikat pengguna yang ada. Id pengguna ada di dalam model aplikasi seperti user_id.
Ini adalah pertanyaannya
SELECT * FROM `certificates`
inner join applications b ON
application_id = b.id where b.user_id = 7
Sekarang berdasarkan catatan yang berasal dari permintaan di atas saya ingin menunjukkan beberapa kolom sertifikat dan beberapa dari aplikasi menggunakan tampilan grid. Namun karena beberapa alasan, jika record lebih dari satu maka saya tidak mendapatkan data kolom apapun dari aplikasi.
<?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>
Kisi di atas menunjukkan nama dan id pengguna jika satu catatan dikembalikan, jika tidak maka akan ditampilkan "Tidak disetel". Saya tidak yakin mengapa 'application.name' dan 'application.user_id' tidak berfungsi ketika lebih dari satu catatan diterima.
Ini pertanyaan saya menggunakan 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; }
Saya akan menghargai jika seseorang memberi tahu saya kesalahan apa yang saya lakukan dalam menampilkan atribut model aplikasi yang tepat.