我创建了一个模型NearMiss
,该模型与Type
模型具有多对多关系。当有针对特定NearMiss
的GET请求时,我希望将数组附加到JSON输出,该输出具有{{1}的所有name
实例的Type
属性}}实例。
我可以将Types数组附加到输出,但是我想摆脱所有其他信息(例如数据透视信息)。
GET请求NearMiss
执行以下方法:
/nearmisses/{nearmiss}
public function show($id)
{
try {
$nearmiss = NearMiss::findOrFail($id)->first();
$nearmiss->types->makeHidden(['id', 'created_at', 'updated_at']);
return response()->json($nearmiss);
} catch(ModelNotFoundException $e) {
abort(400, 'Model not found');
}
}
模型具有以下类型关系:
NearMiss
当前输出:
public function types()
{
return $this->belongsToMany('App\Type', 'near_miss_type', 'near_miss_id', 'type_id');
}
我知道我可以删除其他属性(例如id,created_at,updated_at),但是仍然留下{
"id": 1,
"location_long": "0.0000000",
"location_lat": "0.0000000",
"employee_id": 1,
"created_at": "2019-02-11 16:38:24",
"updated_at": "2019-02-11 16:38:24",
"types": [
{
"id": 1,
"name": "Brandgevaar"
"created_at": "2019-02-11 16:33:25",
"updated_at": "2019-02-11 16:33:25",
},
{
"id": 2,
"name": "Slipgevaar",
"created_at": "2019-02-11 16:34:12",
"updated_at": "2019-02-11 16:34:12",
}
]
}
实例数组(只有一个name属性)。当我尝试Type
时,收到错误消息,flatten()
无法用于BelongsToMany关系。
所需的输出:
flatten()
有人可以帮我获得想要的输出吗?
答案 0 :(得分:0)
您可以手动加载类型,并使用pluck()
函数仅获取每种类型的名称。
$nearmiss->types = $nearmiss->types()->pluck('name');
但是我不确定这是否会干扰Eloquent的魔术特性。