У меня тут сложная проблема с регистрацией как пользователя, так и его / ее питомца. И пользователь, и домашнее животное рассматриваются как отдельные объекты, и оба требуют отдельных регистрационных форм. Тем не менее, домашнее животное пользователя должно быть связано с пользователем через внешний ключ в базе данных. Процесс в основном заключается в том, что когда новый пользователь присоединяется к сайту, сначала они регистрируют своего питомца, затем они регистрируют себя. Причина этого заказа заключается в том, чтобы сначала проверить право своего питомца на сайт (есть некоторые критерии, которые необходимо выполнить), вместо того, чтобы заставить пользователя зарегистрироваться только для того, чтобы узнать, что его питомец не имеет права. Именно такой порядок представления форм вызывает у меня небольшую головную боль, как показано ниже ...
Сайт разрабатывается с использованием инфраструктуры MVC, и процесс регистрации пользователя управляется с помощью метода в контроллере User_form, а процесс регистрации домашнего животного управляется с помощью метода в контроллере Pet_form.
Сначала регистрируется форма регистрации питомца, и на этом этапе данные питомца могут быть сохранены без owner_id, при этом возможно добавление идентификатора пользователя (например, путем получения идентификатора питомца из сеанса) после регистрации пользователя. Тем не менее, выполнение этого способа потенциально может привести к избыточным данным, когда записи о домашних животных будут создаваться в базе данных, но если пользователь на самом деле тоже не регистрирует себя, тогда домашние животные будут бесхозными записями в БД.
Другой вариант - сериализация данных о новом питомце на этапе регистрации питомца, не сохраняйте их в БД до тех пор, пока пользователь не заполнит регистрационную форму. Как только пользователь создан, я могу передать сериализованные данные И owner_id методу в модели Pet, который может обновить DB. Однако мне также нужно установить для вновь созданного $ pet значение $ this-> pet, к которому я затем получу доступ для последовательности других связанных форм. Должен ли я просто установить переменную сеанса в методе модели? Затем в конструкторе контроллера Pet выполните проверку для питомца, сохраненного в сеансе, если да, присвойте $ this-> pet ...
Если для кого-то это имеет смысл, и у вас есть какой-то совет, я был бы рад услышать это!