我使用Laravel 4的Eloquent來製作三種不同的模型:一個用戶模型,一個Agent模型和一個Performer模型。任何用戶都可以以普通用戶身份註冊,或者可以付費成爲代理或執行者。由於代理和執行者都有特殊配置文件,因此我爲表演者和代理創建了包含其配置文件的單獨表格,並且在用戶表格中僅顯示用戶「類型」,表示它們是普通用戶還是普通用戶或代理商。如何將模型A與Laravel中的模型B或模型C相關聯?
這意味着User模型將與Performer和Agent都有has_one關係。因爲用戶只會是其中的一員,所以我想知道是否有可能讓用戶模型僅與其中一個(或者沒有)關聯,具體取決於用戶的類型?
我有一種強烈的感覺,我正在以這種錯誤的方式去做。我是否應該將用戶模型與兩者聯繫起來,並在使用關係之前進行檢查(開始時似乎很明顯,但也不是正確的方法)?有一個更好的方法嗎?
編輯:我上面指出,用戶可能不是那些,但只是一個普通用戶,但它似乎我太模糊:所以,如果用戶沒有支付成爲代理或執行者,他們只是一個普通的用戶。在這種情況下,最好的策略是隻需手動填寫userable_type
列的「用戶」,並在執行$user->userable
之前檢查並確保它不等於「用戶」?
檢查出多態關係。這可能正是你需要的,你已經有了自己的設置。基本上你會找到你的用戶,調用關係,它會返回一個Agent或Performer的實例。 http://laravel.com/docs/eloquent#polymorphic-relations – user1669496