我使用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