Laravel API — Работа с API «сущность» со многими ассоциациями

Итак, у меня есть API, который я создаю, и у него есть модель «Member». Я строю этот API на основе уже существующей базы данных, и этот «член» имеет только около 16 отношений в своем основном запросе. Теперь я должен построить свой API, чтобы ответить на что-то вроде member/{id}/pension и вернуть всю свою информацию о пенсии. Это совершенно новый набор ассоциаций вместе с некоторыми из тех ассоциаций, которые я уже создал. Мои вопросы: плохая практика — начинать создавать дополнительные методы Controller в MembersController, например showPension / showPensionSummary, или мне следует перенести их на другой контроллер …. или есть опция c, которую я пропускаю.

1

Решение

Да, это плохая практика — класть все это в один контроллер. Тогда вы не применяете протокол единой ответственности (SRP). Но если я не ошибаюсь, у вас есть Member модель. Член имеет отношения с пенсией, поэтому у вас есть Pension модель?

В Member Модель вы можете добавить метод, как:

public function pension() {
return $this->hasOne('App\Model\Pension');
}

Если у вас есть больше маршрутов с {id} от участника, вы можете использовать привязку модели маршрута. Измените параметр id на {member}. Затем внутри AppServiceProvider добавьте следующий код:

$router->bind('member', 'App\Models\Member');

Создайте папку внутри вашей папки контроллера с именем Member. Там добавьте MemberController и PensionController. Внутри PensionController добавить метод: showPension или просто показать (потому что вы уже в контроллере). Так чище.

public function show(\Illuminate\Http\Request $request) {
echo json_encode($request->member->pension);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector