2010-06-08 47 views
0

我在這裏註冊一個用戶和他/她的寵物都有一個棘手的問題。用戶和寵物都被視爲獨立的實體,並且都需要單獨的註冊表單。但是,用戶的寵物必須通過數據庫中的外鍵鏈接到用戶。這個過程基本上是當新用戶加入該網站時,首先他們註冊他們的寵物,然後他們自己註冊。這個命令的原因是首先檢查他們的寵物是否符合該網站的資格(有一些標準需要滿足),而不是讓用戶註冊才能找出他們的寵物不符合條件。正是這種表單提交的順序導致我有點頭疼,如下...幫助處理兩個註冊表單之間的數據依賴關係

該網站正在開發一個MVC框架,並且用戶註冊過程通過User_form中的方法進行管理控制器,而寵物註冊過程通過Pet_form控制器中的方法進行管理。

寵物登記表首先發生,和寵物的數據可以被保存沒有在這個階段owner_id,可能有被添加的用戶ID(例如通過從會話檢索寵物的ID)以下用戶註冊。但是,這樣做可能會導致多餘的數據,在數據庫中創建寵物記錄,但如果用戶實際上沒有註冊自己,那麼寵物將成爲數據庫中的無主記錄。

另一種選擇是在寵物註冊階段連載新寵物的數據,直到用戶填寫自己的報名表,不要將其保存到數據庫中。一旦用戶被創建,我可以將序列化的數據和owner_id傳遞給Pet Model中的一個可以更新數據庫的方法。但是,我還需要將新創建的$ pet設置爲$ this-> pet,然後我可以訪問其中一系列其他相關表單。我應該只在模型方法中設置會話變量嗎?然後在寵物控制器的構造函數中,檢查存儲在會話中的寵物,如果是,分配給$ this-> pet ...

如果這對任何人都有意義,並且你有一些建議,我會感激聽到它!

回答

0

這裏有一個稍偏左場解決方案(這可能會或可能無法正常工作取決於您situtation:

要求用戶輸入時的寵物註冊一個有效的電子郵件地址,然後根據用戶的寵物鏈接的用戶通過匹配的電子郵件地址(或電子郵件地址的散列)註冊

如果您留下了懸掛的寵物參考資料,您可以在一個月後向寵物主人發送一封電子郵件,說「我即將刪除您的寵物」 (如果沒有關聯的用戶ID)或類似的東西。