2015-05-26 6 views
1

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

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

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

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

+0

Hum ... Laravel-не использует глобальные пространства имен больше, вы сделали "использовать ..." заявление для вашей Fractal библиотеки? – ChainList

+0

Да, в моем трансформаторе автоматически добавляется. «используйте Лигу \ Фрактал»; – Bellots

+0

Можете ли вы разместить сообщение об ошибке? – ChainList

ответ

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

Большое спасибо за вашу поддержку !!! Он отлично работает !!! :) – Bellots

+0

Если вы хотите удалить ключ «данные» в ответ, вы можете вернуть текущий ($ fractal-> createData ($ resource) -> toArray()); – Bellots

+0

Это работает только с toArray méthode. – ChainList