如何在laravel 5.5中将数组作为API资源返回

dad*_*jar 5 php api json laravel

我想(出于项目原因),在类控制器中创建一个数组并将其传递给资源.在我的控制器类中考虑这个方法:

public function getExample(){
  $attribute=array('otherInfo'=>'info');

  return new ExampleResource($attribute);
}
Run Code Online (Sandbox Code Playgroud)

而我在课堂上会写一些像ExampleResource这样的东西:

public function toArray($request){
return[
'info' => $this->info
];

}
Run Code Online (Sandbox Code Playgroud)

我如何转换值$属性来执行此操作return new ExampleResource($attribute);

请不要建议我在模型中插入字段信息,这个属性只能来自外部,来自控制器而不属于数据库中的模型.

class ExampleResource extends Resource
{
    private $info;
    /**
     * 
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
     public function __construct($info)
     {
         $this->$info = $info;
     }


    public function toArray($request)
    {
        return[
          'info'=>$this->$info,
          'id' => $this->id
          ];
          }
        }
Run Code Online (Sandbox Code Playgroud)

Ale*_*nin 5

向资源类添加构造函数:

public function __construct($resource, $attribute)
{
    $this->resource = $resource;
    $this->attribute = $attribute;
}
Run Code Online (Sandbox Code Playgroud)

然后在toArray()

return [
    'info' => $this->attribute,
    'created' => $this->created_at
];
Run Code Online (Sandbox Code Playgroud)

并使用它:

return new ExampleResource(Model::find($id), $attribute);
Run Code Online (Sandbox Code Playgroud)