2016-03-01 168 views
0

我已经添加了4个列到我的CakePHP用户表中,并试图找出如何将这些列包含在$this->Auth->user()对象中。CakePHP - 将自定义值添加到用户对象

我已经将列信息添加到我的用户模型和实体,但仍然没有喜悦。目前我的用户对象看起来像这样;

[ 
    'id' => (int) 1, 
    'username' => 'admin', 
    'name' => 'Web Admin', 
    'email' => '[email protected]', 
    '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

等待ndm检查他的最新问题列表.....;) – JayIsTooCommon

+0

你试过打开调试吗? – Holt

回答

1

默认情况下,内置的认证程序将获取表模式中的所有字段。

您可能只是忘记清除缓存(tmp/cache/models),无论何时更改模式,您都应该这样做。

如果想要指定正在提取哪些字段,则需要定制查找器。

Cookbook > Controllers > Componenents > 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', 'coulumn_y']); 
} 

应当指出,认证所需的字段,必须包含,即像usernamepassword

+0

清除缓存做到了,谢谢ndm。 – JayIsTooCommon

相关问题