Поиск parent по username

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AlanHarman
Сообщения: 1
Зарегистрирован: 2021.05.12, 12:37

Поиск parent по username

Сообщение 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, но не уверен.

Что я делаю не так?
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Поиск parent по username

Сообщение 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])
Ответить