PHP分形变换器返回嵌入数据

时间:2014-05-02 14:06:01

标签: php laravel-4

我尝试使用Fractal转换API数据输出。这适用于单个项目和集合,但我似乎无法使用嵌入式数据。不幸的是,我找不到很多"如何""在分形。我按照Fractal网站上的信息,但它不会工作。我使用Laravel 4作为我的框架。

这就是我在Transformer课上的内容:

    protected $availableEmbeds = array(
    'requirements'
);
    public function transform(){ etc... }

    public function embedRequirements(Regions $regions)
{
    return $this->collection($regions->requirements, new RequirementsTransformer);
}

然后,我的控制器里面有

    $regions = Regions::with($this->eagerLoad)->get();

这给了我想要的结果。

但是当我将这些数据传递给变压器时,它并没有提供所需的结果:

    return $this->respondWithCollection($regions, new RegionTransformer());

RespondWithCollection方法

    protected function respondWithCollection($collection, $callback)
{
    $resource = new Collection($collection, $callback);

    $fractalManager = new Manager();
    $rootScope = $fractalManager->createData($resource);
    //$rootScope = $this->fractal->createData($resource);

    return $this->respondWithArray($rootScope->toArray());
}

这是输出:

    {
"data": [
    {
        "id": 36218,
        "name": "Netherlands",
        "active": true,
        "created": "2014-02-28 11:17:02"
    }
],
"embeds": [
    "requirements"
]

}

我期待的地方"要求"成为"数据"中的关系键的一部分键。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:1)

我还遇到了这个问题。解决方案是

变形金刚班:

public function embedRequirements(Regions $regions)
{
    $requirements = $regions->requirements()->get();
    return $this->collection($requirements, new RequirementsTransformer);
}

get()完全不同

$ regions->要求()的 - >得到()