php - 如何在 Laravel 5.5 中将数组作为 API 资源返回

标签 php json laravel api

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

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

  return new ExampleResource($attribute);
}

我在类里面会写一些类似 ExampleResource 的东西:

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

}

如何转换值 $attribute 以执行此操作 return new ExampleResource($attribute); ?

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

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
          ];
          }
        }

最佳答案

为资源类添加构造函数:

public function __construct($resource, $attribute)
{
    $this->resource = $resource;
    $this->attribute = $attribute;
}

然后在 toArray() 中:

return [
    'info' => $this->attribute,
    'created' => $this->created_at
];

并使用它:

return new ExampleResource(Model::find($id), $attribute);

关于php - 如何在 Laravel 5.5 中将数组作为 API 资源返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48342714/

相关文章:

javascript - ckeditor 未在弹出对话框中加载通过 ajax 生成的元素?

php - 如何从两个有条件的表中进行选择

javascript - 使用 javascript 将 List 从 JSON 元素转换为 ArrayList

php - Laravel Mail ShouldQueue 与 Job ShouldQueue

php - PHP 套接字中的错误?它不遵守超时

javascript - 使用 php 和 Javascript 的多个文本区域的最大长度

java - 漂亮地打印字符串到 JSON 格式

python - 如何从字典列表转换为字典?

mysql - 具有可为空外键的 Laravel 数据透视表

php - 从收藏品中获取 key