我在laravel资源中有一个简单的关系,如下所示:
在我的家庭模型中:
public function gallery()
{
return $this->hasMany(Gallery::class);
}
在我的画廊模型中:
public function home(){
return $this->belongsTo(Home::class);
}
现在在我的控制器中:
$data = Home::with('gallery')
->where('is_deleted', 0)->Paginate(env('PAGINATE_NUMBER'));
return new HomeResource($data);
现在,这向我显示了如下结果:
{
name: example,
id: 1,
gallery: {
id: 1,
name:item1,
},
{
id: 2,
name:item2,
},
{
id: 3,
name:item3,
}
}
但是在我的资源中,我想将格式更改为如下所示:
{
name:example,
id : 1,
some other fileds ,
gallery: {item1,item2,item3,item4,. . .
}
}
我希望我的画廊仅选择名称列并用逗号分隔,但我的问题是我必须在资源中加载关系并更改,我不知道是否有可能更改加载在关系中的属性资源与否。
答案 0 :(得分:2)
您可以使用爆破方法在HomeResource上执行以下操作:
class HomeResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'gallery' => $this-> gallery->implode('name',','),
];
}
}