Страница 1 из 1

Поиск parent по username

Добавлено: 2021.05.12, 12:39
AlanHarman
Добрый день.

Помогите пожалуйста реализовать поиск по parent->username а не по id.

index.php

Код: Выделить всё

[
'attribute' => 'parent_id',
'value' => function ($model) {
if (isset($model->parent->id))
return Html::a(Html::encode($model->parent->username),
['view', 'id' => $model->parent->id]);
return " ";
},
'format' => 'raw',
],
Модель Users

Код: Выделить всё

public function getParent(): ActiveQuery
{
return $this->hasOne(User::class, ['id' => 'parent_id']);
}

rules в UserSearch

public function rules()
{
return [
[['id', 'status'], 'integer'],
[['username', 'email', 'parent_id', 'parent'], 'safe'],
];
}
Но поиск по username не работает, предполагаю, что надо джоинить parent, но не уверен.

Что я делаю не так?

Re: Поиск parent по username

Добавлено: 2021.05.13, 20:34
yiijeka
В UserSearch у вас должен быть

Код: Выделить всё


public $parentUsername;

public function rules()
{
return [
//....другие правила
[['parentUsername'], 'string'],
];
}

В index.php меняете

Код: Выделить всё

'attribute' => 'parentUsername',
И в методе UserSearch::search добавляете условие для query

Код: Выделить всё

$query->joinWith(['parent'])->andFilterWhere(['parent.username'=>$this->parentUsername])