API 资源使用单一资源类和资源类集合时如何控制不同响应的输出

单一资源类Goods

    return [
            'id' => $this->id,
            'title' => $this->title,
            'detail' => $this->detail,
            'sales' => $this->sales,
            'video' => $this->video ? config('app.url') . $this->video : '',
            'cover' => $this->cover ? config('app.url') . $this->cover : '',
            'photo' => $photos
        ];

资源类结合GoodsCollection

  return [
            'data'=>$this->collection,
        ];

我想实现在collection输出时可以过滤video,photo

请问该如何解决?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
龙小默

可以在数组里使用 $this->mergeWhen(condition, [
'key' => 'value',
...
])

6年前 评论
6年前 评论
Noctis (楼主) 6年前
// 获取数据时,根据需要设置一个特定的变量,比如
Goods::select(DB::raw('*, 1 as hidden_vedio_and_phot'));

// Resource 里面使用 mergeWhen
return [
    $this->mergeWhen(!$this->hidden_vedio_and_phot, [
        'video' => $this->video ? config('app.url') . $this->video : '',
        'photo' => $photos    
    ]),
];
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!