【问题标题】:Laravel resource collection, return data from resource to collectionLaravel 资源集合,从资源返回数据到集合
【发布时间】:2022-07-26 20:09:21
【问题描述】:

我正在使用 Laravel v6 并编写资源和资源集合。我想使用资源集合中资源中的一些数据。比如我有以下UserResourceUserCollection

class UserResource extends JsonResource
{
    public $data = 0;
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        $this->data + = 5; 
        return [
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at,
        ];
    }
    public function getAdditionalData(){
            return $this->data;
    }
}

class UserCollection extends ResourceCollection
{
    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
            'additional-data' => [
                (new UserResource(null))->getAdditionalData(),
            ],
        ];
    }
}

我想返回一些在资源中计算出来的数据,并在资源集合中使用。我收到的值为 0,而我期望为 5。如何将这些数据从资源返回到集合中?

【问题讨论】:

  • 显示您期望的结果示例

标签: php laravel


【解决方案1】:

您还没有调用资源的toArray() 函数,因此您的data 没有增加。尝试先调用该函数,例如:

$userResource = new UserResource(null);
$userResource->toArray(); // Returns an array. Your data is incremented here
$additionalData = $userResource->getAdditionalData(); // what you actually want

如果你能提供你正在尝试做的事情的更大图景会有所帮助。

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2019-07-26
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    相关资源
    最近更新 更多