DJZT
@DJZT
Laravel - code for you

Как реализовать историю many-to-many связи в laravel?

Добрый вечер. Подскажите как правильно реализовать связь между моделями. Имею модель заявки Apply и модель статуса Status. Связь many-to-many (belongsToMany). В связующей таблице есть дополнительные поля, такие как comment, user_id. Необходимо сделать связь таким образом, что бы я мог через магическое свойство получать доступ к текущему статусу $Apply->status и использовать
$Apply->status()->where('...', '...')->get() // и тому подобное
.

Но и осталась возможность делать $Apply->statuses и
$Apply->statuses()->where('...', '...')->get() // и тому подобное


Насколько я понимаю, ларавел не даёт такого функционала, либо я его не знаю. Насколько правильно использовать 4ю таблицу apply_status_history в которой будет записываться (дублироваться) записи статуса, а в связующей перезаписываться?
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
DJZT
@DJZT Автор вопроса
Laravel - code for you
Решил вопрос двойной связью. Сделал таблицу для модели StatusHistory
status_history
- increment id
- integer status_id
- integer apply_id
- integer user_id
- string comment
- timestamps

applies
- increment id
- .....
- status_id

apply_statuses
- increment id
- string title

Сделал проброс параметров через getCommentAttribute и getTitleAttribute из модели Status в модель StatusHistory и добавил обработчик на сохранение Apply модели, что бы дублировался статус в таблицу StatusHistory
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Все данные из связующей таблицы хранятся в pivot
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы