我正在创建一个将使用多种类型用户的Web应用程序(例如管理员,管理员,用户)。每个用户都需要存储关于他们的不同信息,有些信息在每种用户类型中都是相同的(即用户名,密码,电子邮件),而其他用户则不同。
我想知道使用数据库的最佳方法,同时使用ACL& CakePHP中的Auth组件。我看到了两种可能的解决方案:
我看到1的问题是,我不确定CakePHP使用不同的模型获取权限是多么容易,而不是使用组表。所以,我认为第二个解决方案是最简单的设置,也许是维护,但3个额外的表有多少开销?还是有一个我没想过的更好的解决方案?
答案 0 :(得分:2)
您可以使用以下列创建一个名为userTo User的用户名为user_data的表:
用户HasMany UserData和UserData属于用户
有关如何设置关系数据的参考,请参阅http://book.cakephp.org/view/1043/hasMany和http://book.cakephp.org/view/1042/belongsTo。
$data = array(
'UserData' => array(
'user_id' => 2,
'key' => 'birthday',
'value' => 'Oct 6th',
'type' => 'admin'
)
);
然后,在控制器中,您可以使用Containable行为获取自定义数据:
$this->set('user', $this->User->find('first', array('conditions' => array('User.id' => 2), 'contain' => array('UserData'))));
在视图中(可能最好使其成为辅助函数)
$birthday = Set::extract('/User/UserData[key=birthday]', $user);
echo $birthday[0]['value'];