Как организовать два действия: создать 2 модели и связать одну с другой ИЛИ создать только одну модель (в зависимости от выбора пользователя)

Я не знаю, что делать в этой ситуации.
У меня есть две модели:

  • Комментарии (task_id, текст)
  • Задача (название, приоритет, тип, описание)

Мне нужно дать пользователю выбор, как создавать эти модели:

  • Создайте само задание
  • Создать простой комментарий (task_id = null)
  • Создать комментарий КАК задание (не спрашивайте почему, это часть моей идеи :))

Первые два сделаны, у меня есть отдельные контроллеры и методы. Но последний немного сложнее:
Когда пользователь нажимает «создать комментарий как задачу» (+ он заполняет форму свойствами задачи), серверная сторона должна создать новую задачу, а затем создать новый комментарий со ссылкой task_id на созданную задачу. Все, что я могу себе представить, это грязный повторный код.

Лучший способ, который я нашел:

  • Создайте событие с именем «CreatedTaskFromCommentsSection» и вызовите репозиторий комментариев (в слушателе), чтобы создать новый комментарий, связанный с задачей.
  • затем используйте TaskController-> create метод и передайте дополнительную информацию комментария в запросе и проверьте, вызывает ли ($ request-> comment_title) событие

Но я думаю, что это действительно плохая логика. Может быть, я должен использовать другую структуру таблицы для этого? Буду благодарен за любые советы здесь 🙂

0

Решение

Хорошо, я в конечном итоге с этим решением:
Создайте декоратор репозитория задач, этот декоратор добавляет создание комментариев. Так что, если в действии create задачи есть $ request-> comment_text, то мы создаем новую задачу через декоратор. Это лучшее решение, которое я могу создать, любые мысли и советы все еще ценятся 🙂

0

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

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

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