Я создал модель NearMiss
, которая имеет отношение многих ко многим с моделью Type
.Когда есть запрос GET для определенного NearMiss
, я хочу, чтобы к выводу JSON был присоединен массив, который имеет атрибут name
всех экземпляров Type
, принадлежащих экземпляру NearMiss
.
Я могу прикрепить массив типов к выводу, но я хочу избавиться от всей дополнительной информации (такой как сводная информация).
Запрос 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, creation_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"
]
}
Может ли кто-нибудь помочь мне получить желаемый результатпожалуйста.