Kolejny problem napotkałem, z którym nie potrafię sobie póki co poradzić.
Dwie tabele jedna użytkownik z której potrzebuję pobrać nazwę użytkownika.
Druga tabela, w której na podstawie id użytkownika zapisuje sobie kto utworzył, edytował zamknął.
Problem wyszukiwanie ta aby szukać username zamiast wartości integera.
Dla pojedynczych wartości nie związanych z użytkownikiem powiązanych kluczami obcymi jest ok i działa problem jest przy próbie korzystania kilkukrotnego odwołania się do nazwy użytkownika w tym samym miejscu.
Błąd jest następujący:
Utworzone mam relacje, które to wyświetlają nazwę użytkownika w widokach i działają.
public function getUserCreateTask()
{
return $this->hasOne(User::className(),['id' => 'task_created_by']);
}
public function getUserUpdateTask()
{
return $this->hasOne(User::className(),['id' => 'task_updated_by']);
}
public function getUserCloseTask()
{
return $this->hasOne(User::className(), ['id' => 'task_closed_by']);
}
public function getUserReopenTask()
{
return $this->hasOne(User::className(), ['id' => 'task_reopen_by']);
}
Dla jednego działa dla większej ilości już, błąd jaki podałem wyżej.
Próbuję się odwołać w modelu wyszukiwania w ten sposób:
$query->joinWith('userCreateTask');
$query->joinWith('userUpdateTask');
oraz
->andFilterWhere(['like', 'user.username', $this->task_created_by])
->andFilterWhere(['like', 'user.username', $this->task_updated_by]);
Szukam jakieś wskazówki jak użyć aliasów, czy w ogóle dobrze myślę, że należy je użyć?
Wstępne próby użytych informacji wyszukanych w google na ten temat dają negatywne wyniki.
Edit:
Chyba rozwiązałem poprzez dodanie do relacji:
->from(['task_created_by' => User::tableName()]
->from(['task_updated_by' => User::tableName()]
Następnie odwołuję się w sposób:
->andFilterWhere(['like', 'task_created_by.username', $this->task_created_by])
->andFilterWhere(['like', 'task_updated_by.username', $this->task_updated_by]);
Czy poprawne jest to rozwiązanie?