в таблице matches два поля с айди юзера, user1 и user2
мне надо в гриде фильтровать по их имени из таблицы user
сделал две связи
public function getUserHome()
{
return $this->hasOne(User::className(), ['id' => 'user1']);
}
public function getUserAway()
{
return $this->hasOne(User::className(), ['id' => 'user2']);
}
дальше в модели поиска
public function rules()
{
return [
[['id', 'status'], 'integer'],
[['user1', 'user2', 'created_at'], 'safe'],
];
}
$query = Matches::find()->with(['userHome', 'userAway', 'profileHome', 'profileAway'])->where(['tour_id' => $this->tourId]);
// grid filtering conditions
$query->andFilterWhere([
'FROM_UNIXTIME(created_at, "%d.%m.%Y")' => $this->created_at,
'status' => $this->status,
]);
$query->joinWith(
[
'userHome' => function ($q) {
$q->where('user.username LIKE "%' . $this->user1 . '%"');
},
// 'userAway' => function ($q) {
// $q->where('user.username LIKE "%' . $this->user2 . '%"');
// }
]
);
вот так работает, фильтруется юзер1, если раскоментить это
// 'userAway' => function ($q) {
// $q->where('user.username LIKE "%' . $this->user2 . '%"');
// }
тогда ошибка
SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'user'
The SQL being executed was: SELECT COUNT(*) FROM `matches` LEFT JOIN `user` ON `matches`.`user1` = `user`.`id` LEFT JOIN `user` ON `matches`.`user2` = `user`.`id` WHERE (`tour_id`='26') AND (user.username LIKE "%vla%") AND (user.username LIKE "%%")
подскажите как исправить?