а не из БД?
Есть задача вывести записи статистики и логи на странице админки на laravel-admin в нативный грид. Логи приходят по API из другого сервиса (тоже своего).
Грид умеет принимать только Eloquent\Model, поэтому получаю данные из API в сервисе и гидрирую ими модель. Для поштучной работы с моделями идельно. Но грид сам хочет получать данные из QueryBuilder (get/first/paginate и т.д.) и в таком случае придётся много переписывать на работу с API вместо БД :-(
Попробовал cristal/php-api-wrapper - удобно, всё прозрачно маппит в API, но возращает модели из собственного класса, который не лезет в грид. Посмотрел ещё несколько пакетов - тоже самое.
Очень хочется использовать именно этот грид ради пагинации, сортировки, фильтров по столбцам и аякса. Подкажите идеи?
ты ведь можешь обернуть коллекцию данных в collection
Гидрация из массива данных (Log::hydrate($data)) возвращает коллекцию, это не проблема. Проблема в $grid = new Grid(new Log()); и дальше внутри грида $log->get() и т.д., т.е. напрямую в квери билдер, а не в коллекцию. Ну и пагинировать коллекцию не вариант, т.к. для этого сначала придётся получить 100500 записей из апи, а потом только резать на страницы
я для этой админки делал наследника обычной модели, и переопределял методы выборки, пагинации, итд
Я примерно так и делаю, только через свой квери билдер, чтобы, если вдруг понадобится, и к другой модели подключить. Тебе удалось все нужные методы заменить? Например, в paginate() вызывается getCountForPagination() из базового билдера, поэтому пришлось заменить весь paginate() runPaginationCountQuery() тоже вызывается откуда-то из дебрей
Обсуждают сегодня