如何在另一个资源中处理Laravel资源?

时间:2019-05-15 17:00:38

标签: laravel api resources lumen

我在资源内部有资源,通常它可以正常工作,但是如果资源1.1中的资源1.1.1给出一个具有特定值的字段,我需要它在资源1处返回空数组。以显示集合Resource 1中的特定Resource 1.1

尝试使用json_decode并强制资源处理,并给出资源的结果字符串和json_decode将其返回到数组。

//资源1.1->

    return [
        'id' => (int)$this->id,
        'block' => BlockResource::collection($this->blocks)->data($this->parameters);
    ];

//(1.1.1)BlockResource

 return [
        'id' => (int)$this->id,
        'groups' => Resource::collection()
    ];

dd($ BlockResource); //显示资源对象而不是处理结果

$ BlockResource = json_encode($ BlockResource);

dd($ BlockResource); //带有已处理的字符串,可以执行json_decode以数组形式返回。...

示例:

resource1: [
                {
                    id : 1
                    block:{
                      id : 1
                      groups : [1,2,3,4,5]
                    }
                },
                {
                    id : 2
                    block:{
                      id : 2
                      groups : []
                    }
                }
]

不应显示2ºresource1.1,因为组是一个空数组 我可以使用json_encode / decode技巧,但这会给我带来多余的处理。

任何想法:D?

1 个答案:

答案 0 :(得分:0)

Well决定使用JsonResource方法和

/**
 * Resolve the resource to an array.
 *
 * @param  \Illuminate\Http\Request|null  $request
 * @return array
 */
public function resolve($request = null)

为我工作