Di bagian 9 kita telah berhasil mengganti angka menjadi tulisan yang lebih dimengerti dari tabel yang saling berelasi. Namun masih terdapat hal yang kurang, yaitu masih belum bisa dilakukan pencarian terhadap nama-nama tersebut. Disini kita akan memperbaikinya.
1. Modifikasi index.php yang berada pada folder /backend/views/branches untuk menambahkan search field.
1 2 3 4 5 6 7 8 9 10 11 |
'columns' => [ ['class' => 'yii\grid\SerialColumn'], [ 'attribute'=>'companies_company_id', 'value'=>'companiesCompany.company_name', ], //'branch_id', 'branch_name', 'branch_address', 'branch_created_date', 'branch_status', |
Search field tersebut belum bisa berfungsi.
2. Modifikasi model BranchesSearch.php yang berada di folder /backend/models dengan menambahkan companies_company_id di safe.
1 2 3 4 5 6 7 |
public function rules() { return [ [['branch_id'], 'integer'], [['branch_name', 'companies_company_id','branch_address', 'branch_created_date', 'branch_status'], 'safe'], ]; } |
3. Masih di model BranchesSearch, modifikasi public function search dengan menambahkan $query->joinWith(‘companiesCompany’), dan addFilterWhere :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->joinWith('companiesCompany'); $query->andFilterWhere([ 'branch_id' => $this->branch_id, 'branch_created_date' => $this->branch_created_date, ]); $query->andFilterWhere(['like', 'branch_name', $this->branch_name]) ->andFilterWhere(['like', 'branch_address', $this->branch_address]) ->andFilterWhere(['like', 'branch_status', $this->branch_status]) ->andFilterWhere(['like', 'companies.company_name', $this->companies_company_id]); return $dataProvider; |
Lakukan hal yang sama pada Departments.
Tutorial ini sebagai dokumentasi dan pembelajaran pribadi sekalian belajar terjemahin bahasa Inggris, dan siapa tahu bermanfaat buat orang lain. Sumber lengkapnya diambil dari Youtube DoingITEasy Channel.