【发布时间】:2019-02-12 14:21:52
【问题描述】:
我创建了一个模型NearMiss,它与Type 模型具有多对多关系。当有针对特定 NearMiss 的 GET 请求时,我希望将一个数组附加到 JSON 输出,该数组具有属于 NearMiss 实例的所有 Type 实例的 name 属性。
我可以将一个类型数组附加到输出,但我想去掉所有附加信息(例如枢轴信息)。
GET请求/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": 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",
}
]
}
我知道我可以删除其他属性(例如 id、created_at、updated_at),但这仍然给我留下了一组 Type 实例(只有一个名称属性)。当我尝试flatten() 时,我收到一个错误,指出flatten() 不能用于 BelongsToMany 关系。
期望的输出:
{
"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": [
"Brandgevaar", "Slipgevaar"
]
}
请有人帮我获得所需的输出。
【问题讨论】:
-
您能显示您当前用于生成此输出的查询吗?
-
我编辑了我的原始帖子!