我想知道是否有一种广泛接受的方法可以在CakePHP应用程序中存储用户的首选项。例如,我能想到的一些方法是:
对于可能会更改或扩展的应用程序(即可能会考虑添加或删除首选项的应用程序),是否有更好的方法?
答案 0 :(得分:2)
您可能希望查看CakeDC KeyvalueBehavior中的Utils plugin作为起点。
将插件解压缩到Plugin/Utils/
并创建一个名为preferences
的数据库表,其中包含以下字段:user_id
,field
,value
<?php
class Preference extends AppModel {
$actsAs = array('Utils.Keyvalue');
}
然后,您可以像这样保存和检索首选项(假设为User hasMany Preferences
):
$this->User->Preference->saveSection($this->Auth->user('id'), array(
'Preference' => array(
'dob' => 'mm/dd/yyyy',
'gender' => 'm|f|n',
'url' => 'http://www.example.com',
)
), 'Profile');
$this->User->Preference->getSection($this->Auth->user('id'), 'Profile');
答案 1 :(得分:0)
如果要在Web界面上添加或删除首选项(不更改数据库模式),则需要第二个选项(EAV模型)。缺点是,查询会非常复杂。
但如果偏好变化很少,那就做第3次。
答案 2 :(得分:-2)
您还可以考虑在Cookie中存储依赖于用户的非关键信息。寿命很长,这可能就足够了。