dauren101
@dauren101
Python, Django ,Vue.js

Yii2 в grid view сделать фильтр текстовый по связанному полю?

В модели сделал связь. В grdiview данные появляются из связанной таблицы, но фильтра нет. Как сделать чтобы появился фильтр?
[
            'label' => 'Полное имя',
            'attribute'=>'fullname',
            'filter'=>workers::getFullname(),
            'format' => 'text',
            'value' => 'workerInfo.fullname',
        	],
  • Вопрос задан
  • 1697 просмотров
Решения вопроса 1
dauren101
@dauren101 Автор вопроса
Python, Django ,Vue.js
Решил проблему
Если нужен dropdownlist, то делаем следующее
В модели добавляем связь
public function getWorkerInfo()
	{
    	return $this->hasOne(workersInfo::className(), ['userid' => 'userid']);
	}

Затем в гриде
'columns' => [
['class' => 'yii\grid\SerialColumn'],

'id',
'userid',
'login',
[
'label' => 'Полное имя',
'attribute'=>'fullname',
'value' => 'workerInfo.fullname',
'format' => 'text',

// esli nujen select
'filter'=>workersInfo::find()->select(['fullname', 'fullname'])->indexBy('fullname')->column(),

],



['class' => 'yii\grid\ActionColumn'],
],

Если просто текстовое поле
то фильтр убираем
а в Search model
1) добавляем поле в rules
2) public function search($params)
{
$query = workers::find();

$query->joinWith(['workerInfo']);
3) $query->andFilterWhere(['like', 'login', $this->login])
->andFilterWhere(['like', 'workers_info.fullname', $this->fullname]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@masterfreelance
программист со стажем
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы