raxa raxa - 6 months ago 301
PHP Question

How to get foreign key value instead of key in grid view with searching and filtering in yii 2?

I have two tables

staff
with columns
id
,
name
and
attendance
.
staff_id
is used as foreign key in
attendance
table.

I want to display staff name in attendance gridview.

Attendance model:

public function getStaff()
{
return $this->hasOne(Staff::className(), ['id' => 'staff_id']);
}

public function getStaffName() {
return $this->staff->name;
}


and in index.php I used this code

<?= GridView::widget([
[
'attribute'=>'staff_id',
'value'=>'StaffName',
],
]); ?>


to get value of staff name. In this way I am getting staff name successfully but the problem is that when I make search for staff name in gridview it say "staff_id" should be integer as I define it as integer, but here I want to search name of staff instead of id.

How is this possible ? Thanks in advance

Answer

Add this in search model

$query->joinWith(['staff(relation name)']);

And add below code at filter query.

$query->andFilterWhere(['like', 'staff.name', $this->staff_id])

In staff.name that in staff is table name.

Comments