Допустим, что выводишь модель
Foo,
crud сгенерирован при помощи
gii.
1. Добавляешь свойство
$destinationUser в класс
FooSearch:
class FooSearch extends Foo
{
public $destinationUser;
public function rules()
{
return [
...
['destinationUser', 'safe'],
...
];
}
2. В методе
FooSearch::search() добавляешь:
public function search($params)
{
$query = Foo::find();
$query->joinWith(['destinationUser']);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
// Для сортировки по User->username
$dataProvider->sort->attributes['destinationUser'] = [
'asc' => ['user.username' => SORT_ASC],
'desc' => ['user.username' => SORT_DESC],
];
...
$query->andFilterWhere([
...
])
// Для поиска по имени
->andFilterWhere(['like', 'user.username', $this->destinationUser]);
return $dataProvider;
}
3. Поле выводить примерно так:
[
'attribute' => 'destinationUser',
'options' => ['width'=>'200px'],
'value' => 'destinationUser.username',
]