Как реализовать фильтр ListView Yii2 по связанным таблицам?

Связь книги с жанрами идет через связанную таблицу. Я вывожу все книги в ListView и встал вопрос фильтрации книг.
$query->joinWith('linkGenresBooks');
        $genres_query = null;
        if(is_array($this->genres_id) and !empty($this->genres_id)){
            foreach($this->genres_id as $k => $g){
                $genres_query[$k] = $q;
            }
        }

        $query->andFilterWhere([
            '{{%linkGenresBooks}}.genres_id' => '3',
        ]);

Я пробовал вот так, не проходит фильтрация, к тому же из за joinWith ломается вывод книг.
5bfa07bc99d5d217775639.png

Вот связь:
public function getLinkGenresBooks()
    {
        return $this->hasMany(LinkGenresBooks::className(), ['books_id' => 'id']);
    }


Смотрю в дэбаге вообще нет запроса на жанры5bfa13f1a9f2f726046661.png
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ответы на вопрос 1
@soy4er Автор вопроса
Прошу прощения, я кривой и, валидацию прописал плохо. Жанры были integer, поставил их safe и все нормально. А нашел этот косяк, просто начав выводить print_r-ом сам запрос и после проверки на валидацию он как раз и не проходил.

Единственный вопрос почему 3 из 18, всего записей 3? Это из за joinWith, но не понимаю как поправить5bfa446248b04507803229.png
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы