Я довольно новичок в Laravel и сейчас строю свой первый проект. Сейчас я нахожусь на этапе, когда мне не совсем понятно, как правильно построить отношения с таблицей БД и где добавить логику для приложения.
У меня есть или я хочу следующую настройку:
users table
id | name | email
-----------------
1 | Cathy| cathy@mail.com
2 | Hans | hans@mail.com
gifts table
id | name | description
-----------------------------------------
45 | Football | Adidas Telstar 18
46 | Football shoes | Adidas Predator 18.3
purchases table
id | gift_id | confirmed
---------------------------
1 | 45 | null
reservations table
id | gift_id | user_id
---------------------------
1 | 46 | 2
Пояснение:
Цель состоит в том, чтобы толпа людей организовала то, что они дадут.
Существует таблица подарков, которая с помощью index-метода своего контроллера ресурсов печатает таблицу всех подарков для представления. В этой таблице я хочу, чтобы на каждой кнопке можно было нажимать две кнопки: «пометить как купленный» и «пометить как зарезервированный». Можно пометить подарок в «списке пожеланий» как зарезервированный, и поэтому другие больше не могут этого делать (и знают, что другой парень подарит его в подарок). Или можно пометить подарок как купленный, чем требуется, и администратор должен подтвердить эту покупку.
В настоящее время я создал три модели и один контроллер ресурсов. Подарочная модель имеет 2 отношения «hasOne»: сначала модель покупки, а затем модель бронирования. Модель покупки и модель резервирования настраиваются с отношением «принадлежат» к модели подарка.
Что я в настоящее время не могу сделать, так это различать различные состояния кнопок «пометить как зарезервированное» и «пометить как приобретенное» в зависимости от того, есть ли у подарка запись в таблице покупок или бронирования - где мне лучше разместить эту логику?
Псевдокод на мой взгляд в данный момент:
foreach(gifts as gift)
gift->name
gift->description
makePurchase form-submit-button
makeReservation form-submit-button
endforeach
Надеюсь, этого описания достаточно, иначе дайте мне знать.
Спасибо за вашу помощь!