@kedavr13

Почему Yii2 пагинация считает связанные модели?

Добавил в search метод работу со связанной моделью. Все работает но пагинация считает и связанные модели тоже. Вывожу вот так(carNumbers.car_number')
<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],

            [
                'class' => 'yii\grid\CheckboxColumn',
                'name' => 'id'
            ],
            'name',
            'phone',
            [
                    'attribute' => 'carNumbers.car_number',
                    'value' => function ($model) {
                    $car_numbers = '';
                    foreach ($model->carNumbers as $car_number){
                        if($car_numbers == ''){
                            $car_numbers = $car_number->car_number;
                        }else{
                            $car_numbers .= ' '.$car_number->car_number;
                        }
                    }

                    return $car_numbers;
                },
            ],

В search добавил
$query->joinWith(['carNumbers']);
        $query->andFilterWhere(['LIKE', 'carNumbers.car_number', $this->getAttribute('carNumbers.car_number')]);

Получается что у меня на странице должно быть 10 пользователей, но если номеров машины у одного из пользователей более одного то он выводит меньше пользователей.
Как на скриншоте у выделенного юзера три номера авто, и соответственно выводится всего 8 юзеров60e85d69a13f6672248122.png
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 2
vitaly_74
@vitaly_74
вы говорите что используете carNumbers.car_number, но в методе гридвью у вас написана (скорей всего) связь по многим, и обработка идет связи по многим. вроде все логично.
Ответ написан
@kedavr13 Автор вопроса
Если кто то попадет на этот вопрос с аналогичной проблемой скажу что замена joinWith на with решает ее но она ломает поиск, я просто доработал поиск отдельно, как решить проблему с поиском в рамказ самого фреймворка я не нашел, сделал дополнительный запрос и просто закидываю в search заранее выбранные id
Ответ написан
Ваш ответ на вопрос

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

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