【发布时间】:2013-10-14 12:04:50
【问题描述】:
我正在使用 Laravel 4 的 Eloquent 制作三种不同的模型:用户模型、代理模型和执行者模型。任何用户都可以注册为普通用户,也可以付费成为代理或表演者。因为代理和表演者都有特殊的配置文件,所以我为表演者和代理创建了单独的表,其中将包含他们的配置文件,并且在用户表中只有一个用户“类型”,这表明他们是否是普通用户,表演者,或代理。
这意味着 User 模型将与 Performer 和 Agent 都具有 has_one 关系。因为用户只会是其中之一,所以我想知道是否可以让 User 模型仅与其中之一相关(或不相关),具体取决于用户的类型?
我有一种强烈的感觉,我会以错误的方式解决这个问题。我是否应该将 User 模型与两者联系起来,并在使用关系之前进行检查(起初这似乎很明显,但也不是完全正确的方法)?有没有更好的方法来做到这一点?
编辑:我在上面指定用户可能不是其中任何一个,而只是普通用户,但是我似乎太模糊了:所以,如果用户没有付费成为代理人或表演者,他们'将只是一个普通用户。在这种情况下,最好的策略是手动填写userable_type 列的“用户”,并在我做$user->userable 之前检查以确保它不等于“用户”?
【问题讨论】:
-
检查多态关系。这可能正是您所需要的,并且您已经为它进行了设置。基本上你会找到你的用户,调用关系,它会返回一个代理或执行者的实例。 laravel.com/docs/eloquent#polymorphic-relations
标签: php laravel database-schema eloquent