Используйте вложенные трансформаторы в Ларавел 5

1

В моем приложении Laravel 5 я использую Transformers и Fractal. У меня в моем примере две разные модели: User и UserLogin. Каждый пользователь может иметь несколько UserLogins (я уже добавил отношения "один ко многим"). Теперь я хочу "очистить" свой ответ, который возвращает пользователя с его UserLogins. Поэтому я создал два трансформатора, и я подумал, что я должен назвать трансформатор внутри другого внутри своего возвращения, как здесь:

"UserLogins"=> Fractal::collection($user->userLogins, new UserLoginTransformer).......

К сожалению, это не работает, и ошибка в том, что он не находит фрактальную библиотеку (которая правильно импортирована).

В чем может быть проблема?

  • 0
    Хм ... Laravel 5 больше не использует глобальное пространство имен, вы делали оператор "use ..." для своей библиотеки Fractal?
  • 0
    Да, в моем трансформаторе автоматически добавляется. "использовать Лигу \ Фрактал;"
Показать ещё 7 комментариев
Теги:
laravel-5

1 ответ

1
Лучший ответ

Наконец нашел решение. Фрактальный класс не существует, я не могу упроститься. И вы неправильно использовали библиотеку.

Итак, решение:

use \League\Fractal\Manager;
use \League\Fractal\Resource\Collection as FractalCollection;

$fractal = new Manager();
$resource = new FractalCollection($user->userLogins, new UserLoginTransformer);

return $fractal->createData($resource)->toArray();
  • 0
    Большое спасибо за вашу поддержку!!! Работает отлично !!! :)
  • 0
    Если вы хотите удалить ключ «data» в ответе, вы можете вернуть current ($ fractal-> createData ($ resource) -> toArray ());
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню