【问题标题】:Fractal Transformer Laravel?分形变压器 Laravel?
【发布时间】:2017-05-09 15:53:31
【问题描述】:

我尝试将对象转换为:

$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

【问题讨论】:

    标签: laravel laravel-5 laravel-5.4


    【解决方案1】:

    该函数需要一个 Object,而您传递的是 CollectionObjects...

    但是如果你只是想要转换一个集合,你不需要创建一个特定的类,只需使用 transform Collection 方法和一个匿名函数即可:

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

    【讨论】:

    • 当我有对象时,你能解释一下如何在Fractal\Resource\Item 中使用Transformer:$obj->prototypez()->get()->first(),
    • 我的意思是嵌套关系
    • 不,我刚刚回答了你的问题。 :)
    猜你喜欢
    • 2016-11-03
    • 2019-02-22
    • 2015-05-03
    • 2016-10-23
    • 1970-01-01
    • 2018-08-24
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多