2015-09-14 3 views
2

Я использую связанные модели author и book, и попробуйте показать его gridWiev widget, все в порядке, но как-то отображаются только уникальные строки. Несмотря на запрос в порядке и вернет мне все строки.yii2 gridView показывает только уникальные строки

SELECT `book`., `author`. FROM `book` LEFT JOIN `author` ON `book`.`author` = `author`.`id` LIMIT 20 

Этот запрос возвращает 4 строки, но в gridview только 2, почему? Надеюсь, кто-то мне поможет, спасибо заранее.

Код здесь https://github.com/underpantsGnomes/test

ответ

2

Это произошло becouse колонка id имеет такое же имя. Я просто переименовал автора. id автору. idAuthor и все сработало.

+1

У меня была такая же проблема и конфликтующие столбцы «id», которые GridView использует для рендеринга строк. Еще одно потенциальное решение для этого - установить пользовательское значение 'indexBy' с помощью функции:' $ query-> indexBy (function ($ row) {return $ row ['id'].'- '. $ Row [' book_id '];}); ', но вам нужно явно добавить' book_id' в select. – mae