我在Laravel 5Laravel:強制執行一對一的關係
創建一個應用程序,我創建的應用程序是一個招聘網站,其中一個候選人必須填寫許多形式。由於有很多字段,我決定從邏輯上將users
表分成一對一關係的許多較小的表。
例如兩個這樣的表可能是這樣的:
用戶
- ID
- 角色(如管理員或候選人)
- FIRST_NAME
- 姓
- DOB
driving_licences
- ID
- USER_ID(FK到用戶)
- has_licence
- NUMBER_OF_POINTS
- licence_number
在上述簡單的情況下,users
與driving_licences
有一對一的關係。換句話說,每個User
模型必須有一個對應的DrivingLicence
模型。
創建上述表格和相應的Eloquent模型非常簡單。然而,我正在努力實施每個用戶(或每個候選用戶)都有相應的DrivingLicence
的最佳方法。
該解決方案目前我已經是,每當我用的東西從我DrivingLicence
首先檢查是否存在這種關係,並創建它,如果它不喜歡這樣:
if ($user->drivingLicence === null) {
$drivingLicence = new DrivingLicence();
$drivingLicence->user_id = $user->id;
$drivingLicence->save();
}
這做每次我需要用DrivingLicence
做點什麼,這當然會造成很多重複。
因此,我的問題是,我該如何執行Laravel中的users
和driving_licences
之間的一對一關係。
這可能不會是最好的方法,但可以讓你走上正確的軌道:在你的'用戶'模型中創建一個函數來檢查許可證是否爲空。如果是,則爲用戶創建並保存新的許可證。 '$用戶> checkLicense()'。在'checkLicense()'中檢查'null',創建或獲取許可證,然後返回許可證。清楚的是,這減少了不斷重寫許可證檢查並將其移至模型中的函數的需要。 –
此外,「強制執行」所需許可證的想法是在用戶創建時創建一個空的許可證,以便在用戶保存時進行保存。然後,您可以填寫正確的數據。您不再需要檢查許可證是否存在,因爲您在創建用戶時已創建許可證。 –