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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With