170 похожих чатов

Коллеги, как лучше сделать модель из данных, полученных по API,

а не из БД?
Есть задача вывести записи статистики и логи на странице админки на laravel-admin в нативный грид. Логи приходят по API из другого сервиса (тоже своего).
Грид умеет принимать только Eloquent\Model, поэтому получаю данные из API в сервисе и гидрирую ими модель. Для поштучной работы с моделями идельно. Но грид сам хочет получать данные из QueryBuilder (get/first/paginate и т.д.) и в таком случае придётся много переписывать на работу с API вместо БД :-(
Попробовал cristal/php-api-wrapper - удобно, всё прозрачно маппит в API, но возращает модели из собственного класса, который не лезет в грид. Посмотрел ещё несколько пакетов - тоже самое.
Очень хочется использовать именно этот грид ради пагинации, сортировки, фильтров по столбцам и аякса. Подкажите идеи?

4 ответов

4 просмотра

ты ведь можешь обернуть коллекцию данных в collection

Vladimir- Автор вопроса

Гидрация из массива данных (Log::hydrate($data)) возвращает коллекцию, это не проблема. Проблема в $grid = new Grid(new Log()); и дальше внутри грида $log->get() и т.д., т.е. напрямую в квери билдер, а не в коллекцию. Ну и пагинировать коллекцию не вариант, т.к. для этого сначала придётся получить 100500 записей из апи, а потом только резать на страницы

я для этой админки делал наследника обычной модели, и переопределял методы выборки, пагинации, итд

Vladimir- Автор вопроса

Я примерно так и делаю, только через свой квери билдер, чтобы, если вдруг понадобится, и к другой модели подключить. Тебе удалось все нужные методы заменить? Например, в paginate() вызывается getCountForPagination() из базового билдера, поэтому пришлось заменить весь paginate() runPaginationCountQuery() тоже вызывается откуда-то из дебрей

Похожие вопросы

Обсуждают сегодня

И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
здравствуйте. пытаюсь проверить, содержится ли в десятичном представлении инта некоторая цифра. совершаю: strstr(x, "5") != NULL) получаю ошибку с фото (заведомо неработающий ...
Катя Шевчук🪇
17
Что там вообще с кроссплатформенностью?
🄼🄰🄺🅉🄰🄸
23
{ char buff = *start; *start = *end; *end = buff; } Из-за этой строчки? Что каждый символ через перем бафф? Как вариант использовать другие со...
Wenks
12
#include <stdio.h> #include <string.h> int main() { char *str = "Hello World"; char *ptr; int i = 0; for(char *end = str + strlen(str) - 1; end = str; ptr++, ...
Wenks
9
а я правильно понимаю что в винде сетевые диски выполнены на уровне юзерспейс драйвера? ну я про те которые webDAV, SMB и прочие высокоуровневые
Mixail Frolov
9
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
Карта сайта