【问题标题】:Use nested transformers in Laravel 5在 Laravel 5 中使用嵌套转换器
【发布时间】:2017-05-09 23:28:38
【问题描述】:

在我的 Laravel 5 应用程序中,我正在实现 Transformers 和 Fractal。 在我的示例中,我有两个不同的模型:UserUserLogin。每个用户可以有多个用户登录(我已经在它们之间添加了一对多的关系)。现在我想“清理”我的响应,它返回一个带有他的 UserLogins 的用户。所以我创建了两个转换器,我认为我应该在他的返回内部调用另一个转换器,如下所示:

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

不幸的是它不起作用,错误是它没有找到分形库(正确导入)。

可能是什么问题?

【问题讨论】:

  • 哼... Laravel 5 不再使用全局命名空间了,你有没有为你的 Fractal 库做了“use ...”声明?
  • 是的,在我的转换器中是自动添加的。 "使用联盟\分形;"
  • 你能发布错误吗?
  • UserTransformer.php 第 37 行中的 FatalErrorException:找不到类 'League\Fractal'
  • 尝试做一个“composer dumpautoload”,也许你的classmap必须由composer重写。

标签: php laravel-5


【解决方案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();

【讨论】:

  • 如果你想删除“data”键作为响应,你可以返回current($fractal->createData($resource)->toArray());
猜你喜欢
  • 2016-04-29
  • 2017-12-07
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多