【发布时间】:2013-10-05 00:33:45
【问题描述】:
我有一个用户模型,用于存储牙科检查系统用户的数据。
通常存在三种类型的用户:Administrator、Location Manager和Examiner。
似乎有必要在我的应用程序中将这三个角色视为单独的模型(想象一下,我将如何为每个角色提供不同的视图以及不同的选项等......这是一场噩梦)。
我将如何设置每个模型中的关系。
我的第一个想法是:
//Administrator Model
class Administrator extends User {
$name = 'Administrator';
$table = 'User';
$belongsTo = array(
'User' => array(
'className' => 'User',
'conditions' => array('User.role' => 'administrator'),
)
);
}
然后用户模型将使用 hasMany 引用这个?就 CakePHP 约定而言,如何准确地建模呢?
另外,这个模型会扩展 User 模型还是 AppModel?
【问题讨论】:
-
为什么?!你不能只根据角色为每个用户添加一个带有相关数据的“选项”模型吗?
-
我同意为每种用户类型设置完全不同的模型可能不是最好的设计。但我不知道足够的细节来确定。至于您的问题 - 用户模型应该只有管理员、位置管理员或审查员之一,所以 hasOne 应该是关系。很可能您只希望其他模型、管理员等扩展 AppModel,而不是 User。