return new SomeResourceCollection([SomeModel->paginate(15), $count]); $count = 24
фу, зачем такое делать?
Опыта не хватает
а почему ты вообще ресурс коллекцией называешь?
Есть ресурс и ресурс коллекция
Смотри, есть ресурс коллекция SomeResourceCollection, туда я обычно передаю результат Query (Eloquent если через модель) Builder'a, это обычно либо Eloquent Collection или LengthAwarePaginator, который получается обычным ->paginate(15); в конце запроса. return new SomeResourceCollection( SomeModel->paginate(15) ); Там внутри обычно просто это стоит: SomeResourceCollection extends ResourceCollection { public $collects = SomeResource::class; public function toArray($request) : array { return [ 'data' => $this->collection ]; } В этот раз мне нужно передать что-то ещё, помимо пагинации, общий count запроса, если сделать это в внутри ресурс коллекции и вызвать метод $this->collection->count() то это всегда будет 15, так как пагинация будет скармливать по 15 записей Поэтому я хотел сделать так, return new SomeResourceCollection([SomeModel->paginate(15), $count]); SomeResourceCollection: return [ 'data' => $this[0], 'count' => $this[1] ]; Спасибо что подсказали, ->resource вытащил значение 24: return [ 'data' => $this[0], 'count' => $this[1]->resource ];
Не, не помогло, так как там дальше обычно пагинатор передавался из ресурс коллекция в ресурс и проходился по каждому элементу как функция map() или each() То теперь когда я передаю массив из 2 вещей то вся логика лары ломается
Я понял, что ты имеешь ввиду. Но в доке сказано, что если передаёшь пагинатор в коллекцию, оно автоматически подставляет все мета данные
Аа, да кстати, рили забыл про это "meta": { "current_page": 1, "from": 1, "last_page": 2, "path": "http://domain.local/api/v1/route", "per_page": 15, "to": 15, "total": 24 }
Обсуждают сегодня