我在CakePHP Users表中添加了4个列,我试图弄清楚如何在$this->Auth->user()
对象中包含这些列。
我已将列信息添加到我的用户模型和实体中,但仍然没有乐趣。目前我的用户对象看起来像这样;
[
'id' => (int) 1,
'username' => 'admin',
'name' => 'Web Admin',
'email' => 'webteam@',
'role' => 'admin',
'created' => object(Cake\I18n\Time) {
'time' => '2016-02-09T16:04:46+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
},
'modified' => object(Cake\I18n\Time) {
'time' => '2016-02-12T08:53:16+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
}
]
这个对象在哪里创建,有没有一种方法可以添加我的自定义值,而无需编辑核心CakePHP文件?
感谢您的帮助。
答案 0 :(得分:1)
默认情况下,内置身份验证器将获取表架构中的所有字段。
您很可能忘记清除缓存(tmp/cache/models
),无论何时对模式进行更改,都应该执行此操作。
如果想要指定要提取的字段,则需要自定义查找器。
参见 Cookbook > Controllers > Components > Authentication > Customizing Find Query
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'finder' => 'auth'
]
],
]);
在UsersTable
班级
public function findAuth(\Cake\ORM\Query $query, array $options)
{
return $query
->select(['id', 'username', 'password', 'column_x', 'column_y']);
}
应该注意,必须始终包含身份验证所需的字段,例如username
和password
!