Используя Laravel для разработки веб-приложения, я сталкиваюсь с неясностью, где разместить код.
У меня есть пользовательская модель, которая получает свои данные из другой базы данных. Я могу читать только в этой базе данных, но это нормально. Поля, такие как имя, город и т. Д., Очень непоследовательно хранятся в базе данных. Например, иногда имя полностью пишется с заглавной буквы, а иногда — нет. Итак, я создал метод formatAsName
который в настоящее время проживает в моем UserController
,
Но дело в том, что каждый раз, когда пользовательский объект извлекается из базы данных, я хотел бы использовать этот метод для некоторых столбцов (например, имя и город). Должен ли этот код храниться в контроллере или он принадлежит модели?
Побочный вопрос: есть ли способ сказать Laravel выполнить обратный вызов при выполнении запроса для этой модели? В противном случае я должен вручную написать некоторые из основных Model-методов. Это не проблема, так как взаимодействие ограничено (только поиск), но если оно поддерживается, это будет лучшим способом.
Спасибо за ваше время.
Вы можете также определить свой метод в модели и есть много методов в Laravel,
Вы можете найти больше помощи здесь для вашего руководства по коду: — ВОТ
Я знаю, что вы уже получили свой ответ, но я все еще хочу дать вам совет.
Хорошим подходом для этого случая является использование шаблона репозитория. Делая это, вы можете создавать Presenters и Transformers для вашей модели и определять, как вы хотите, чтобы ваши модели были получены
public function transform(User $model)
{
return [
'name' => strtolower($model->name),
'city' => strtolower($model->city),
'created_at' => Carbon::parse($model->created_at)->format('d-m-Y'),
'updated_at' => Carbon::parse($model->updated_at)->format('d-m-Y'),
];
}
Извините, но у меня нет источника / материала для отправки вам об этом шаблоне, но вы наверняка найдете его в Google. Вы можете проверить мой github, если хотите, и посмотреть на этот репозиторий, на котором есть пример https://github.com/cbcaio/base-laravel