Laravel 5.6 - Pass additional parameters to API Resource?

前端 未结 6 955
天涯浪人
天涯浪人 2020-12-28 17:26

A Laravel API Resource can be either a single resource or a collection. In some cases, additional parameters are required to be passed to the resource/collection from the co

6条回答
  •  孤城傲影
    2020-12-28 18:03

    To works with Laravel 5.7, I made some changes in relation to Wonka's answer

    UserResource

        class UserResource extends Resource{
    
            protected $foo;
    
            public function foo($value){
                $this->foo = $value;
                return $this;
            }
    
            public function toArray($request){
                return [
                    'id' => $this->id,
                    'name' => $this->name,
                    'foo' => $this->foo,
                 ];
            }
    
            public static function collection($resource){
                return new UserResourceCollection($resource, get_called_class());
            }
        }
    

    UserCollection

        class UserResourceCollection extends AnonymousResourceCollection {
    
            protected $foo;
    
            public function foo($value){
                $this->foo = $value;
                return $this;
            }
    
            public function toArray($request){
                return $this->collection->map(function(UserResource $resource) use($request){
                    return $resource->foo($this->foo)->toArray($request);
            })->all();
    
            }
        }
    

提交回复
热议问题