我正在使用 Laravel 4 的 Eloquent 制作三个不同的模型:用户模型、代理模型和执行者模型。任何用户都可以注册为普通用户,也可以付费成为代理或表演者。因为代理和表演者都有特殊的配置文件,我为表演者和代理创建了单独的表,其中将包含他们的配置文件,并且在用户表中只有一个用户“类型”,这表明他们是否是普通用户,表演者,或代理。
这意味着 User 模型将与 Performer 和 Agent 都具有 has_one 关系。因为用户只会是其中之一,所以我想知道是否可以让 User 模型仅与其中一个(或没有)相关,具体取决于用户的类型?
我有一种强烈的感觉,我要走错路了。我是否应该将 User 模型与两者联系起来,并在使用关系之前进行检查(起初这似乎很明显,但也不是完全正确的方法)?有一个更好的方法吗?
编辑:我在上面指定了用户可能不是其中任何一个,而只是普通用户,但似乎我太含糊了:所以,如果用户没有付费成为代理人或表演者,他们只会做一个普通用户。在这种情况下,最好的策略是手动填写userable_type
列的“用户”并在我做之前检查以确保它不等于“用户”$user->userable
吗?