Laravel как добавить в красноречие - PullRequest
1 голос
/ 15 апреля 2020

Мне нужно глобально изменить paginate eloquent

. Мне нужно добавить

'status' => 'success'

* 1007. *

к атрибутам, возвращаемым из ответа на страницы,

, что я сделал, в методе внутри контроллера

$data = product::paginate();
return collect(['status' => 'success'])->merge($data); 

, и он работает правильно

, но мне нужно добавлять (статус) каждый раз, когда я использую paginate eloquent в каждом месте приложения

, поэтому есть ли способ сделать это глобально

Обратите внимание, у меня нет проблем если есть другой способ создать новый eloquent под названием newPaginate () для решения проблемы

1 Ответ

0 голосов
/ 15 апреля 2020

Что вы фактически пытаетесь сделать, это отредактировать метод toArray() класса Paginator.

Как насчет создания нового класса MyPaginator, который расширяет lengthAwarePaginator новым toArray() method?

App \ MyPaginator. php (или куда вы хотите его поместить)

namespace App;

use Illuminate\Pagination\LengthAwarePaginator;

class MyPaginator extends LengthAwarePaginator
{

  public function __construct(LengthAwarePaginator $paginator) {

    parent::__construct($paginator->items, $paginator->total, $paginator->perPage, $paginator->currentPage, $paginator->options);

  }

  public function toArray() {

      return array_merge(parent::toArray(), ['status'=>'success']);

  }

}

Использование

$data = new MyPaginator(product::paginate());

Если вам нужно выполнить эту работу с другими типами Paginator, вы можете расширить AbstractPaginator и соответственно настроить конструктор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...