2015-06-10 3 views
3

Мы используем Laravel в нашей компании, и мы следуем 2 простых конвенций:Модели выходят из-под

  1. Контроллеры должны быть тонкими.
  2. модели представляет собой объекты базы данных (пользователь, роли, автомобили)

Теперь мы столкнулись с дилеммой: у нас есть экран, где сложные графики данных представлены, которые требуют некоторой долгой и тяжелой логики для производства. Но где мы должны поместить всю эту логику? контроллеры должны быть тонкими - поэтому не в контроллерах. Модели представляют собой сущности данных, поэтому модель не может быть моделью, так как на этом экране отображаются данные из всех других моделей, но у них нет фактического объекта таблицы/базы данных. Услуги не похожи на нормальное место.

мне было интересно, как же вы приближаетесь подобные ситуации

+1

Не должно быть «Контроллеры должны быть как можно более тонкими»? Я имею в виду, вы не можете сказать: «Я хочу, чтобы мой автомобиль весил максимум 2 кг, а затем построил грузовик-монстр». –

+0

Согласен, добавив эту логику к контроллеру, был один из вариантов, который появился, но я хотел проконсультироваться с хорошими людьми SO, чтобы увидеть, если они подходят, мы не думали о – jvrnt

+0

Мне также интересно узнать о других людях , поскольку я не эксперт по laravel –

ответ

0

Я бы поставил логику на службу. В сервисе вы можете запускать другие службы (в случае, если какая-то логика уже находится в другой службе или если услуга очень сложная) и использовать репозитории (или модели на случай, если вы не используете какие-либо репозитории). Разумеется, нет смысла вводить большой код или логику в контроллеры, поскольку они могут запускать службы, которые возвращают желаемый результат.

Смежные вопросы