У меня есть модель с именем EquipmentProfile
, которая имеет отношение с EquipmentProfileType
, определенным так:
public function equipmentType()
{
return $this->belongsTo(EquipmentProfileType::class, 'equipment_profile_type_id');
}
У меня есть определение доступа на EquipmentProfile
, чтобы я мог получить определенное значение из этого отношения:
public function getCategoryAttribute()
{
return $this->equipmentType->name;
}
Затем я включаю category
в мой массив $appends
, чтобы он включался при возврате модели в формате JSON.
Это прекрасно работает, за исключением того, что в моем ответе JSON я также получаю полное отношение к EquipmentProfileType
:
//...more fields above
"category": "Brewing",
"equipment_type": {
"id": 10,
"name": "Brewing",
"created_at": null,
"updated_at": null
}
Я хочу, чтобы возвращался только category
, но не объект equipment_type
. Если я удаляю category
из моего $appends
массива, то equipment_type
не включается в ответ.
Как мне вернуть category
без equipment_type
?
Редактировать
Мой контроллер вызывает метод в хранилище:
public function store(EquipmentProfileRequest $request)
{
$data = $request->except(['api_token']);
return $this->equipmentProfileRepository->store($data, $request->user());
}
Вот код репозитория ниже:
public function store(array $data, User $user)
{
if (!array_key_exists('name', $data) || $data['name'] == '') {
$data['name'] = 'Equipment Profile';
}
$data['user_id'] = $user->id;
return $this->equipmentProfile->create($data);
}
Примечание
Даже использование tinker
дает мне тот же результат:
Psy Shell v0.9.6 (PHP 7.1.7 — cli) by Justin Hileman
>>> App\Models\EquipmentProfile::first()->toJson()
=> "{... "category":"Brewing","equipment_type":{"id":10,"name":"Brewing","created_at":null,"updated_at":null}}"