2017-05-09 59 views
0

我試着變換對象像爲:分形變壓器Laravel?

$objects = Object::all(); 
$objects = (new ObjectTransformer)->transform($objects); 

其中ObjectTransformer是:

class ObjectTransformer extends TransformerAbstract { 

    public function transform(Object $obj) 
    { 
     return [ 
      'id' => (int) $obj->id, 
      'name' => $obj->prefix 
     ]; 
    } 
} 

我得到一個錯誤:

Type error: Argument 1 passed to App\Http\Controllers\API\ObjectTransformer::transform() must be an instance of App\Http\Controllers\API\Object, instance of Illuminate\Database\Eloquent\Collection given 

回答

0

函數需要一個Object,你傳遞一個Collection of Objects ...

但是,如果你想要的僅僅是變換的集合,你不需要創建一個特定的類,只需使用transform收集方法與匿名函數,它的工作:

$objects = Object::all(); 
$objects->transform(function($object,$key){ 
    return [ 
     'id'=>(int)$object->id, 
     'name'=>$object->prefix 
    ]; 
}); 
+0

你能解釋一下我當我有object:'$ obj-> prototypez() - > get() - > first()時,如何在'Fractal \ Resource \ Item'中使用Transformer' – Gagamerov

+0

我的意思是嵌套關係 – Gagamerov

+0

不,我只是回答你的題。 :) – Amarnasan