cakePHP 获取登录用户的详细信息

cakePHP get users details of logged in user

我在 cakePHP 3 中使用 cakeManager 插件来管理用户。我有两个用户角色 businesses 和 employees,每个角色都有附加信息表。

当用户登录时,我试图获取包含用户详细信息的附加信息,但我似乎无法获取与用户相关的表。

商业模式:

/**
 * Businesses Model
 */
class HotelsTable extends Table
{

/**
 * Initialize method
 *
 * @param array $config The configuration for the Table.
 * @return void
 */
public function initialize(array $config)
{
    $this->table('businesses');
    $this->displayField('name');
    $this->primaryKey('id');
    $this->addBehavior('Timestamp');
    $this->belongsTo('Users', [
        'foreignKey' => 'user_id',
        'joinType' => 'INNER'
    ]);
    $this->hasMany('Employees', [
        'foreignKey' => 'hotel_id'
    ]);
}

来自插件的扩展用户模型

namespace App\Model\Table;

use CakeManager\Model\Table\UsersTable as BaseUsersTable;
use Cake\Validation\Validator;

/**
 * Users Model
 */
class UsersTable extends BaseUsersTable
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->hasOne('Employees', [
            'foreignKey' => 'user_id'
        ]);
        $this->hasOne('Businesses', [
            'foreignKey' => 'user_id'
        ]);
    }
}

我已将企业协会直接添加到插件中,也是为了检查模型扩展是否存在问题。

查看返回的对象,我发现角色模型关联也没有返回,所以我怀疑是插件查找设置为不检索断言。

我的问题是我不知道如何覆盖它。

自 CakePHP 2.2 (http://bakery.cakephp.org/articles/lorenzo/2012/07/01/cakephp_2_2_and_2_1_4_released) 起,AuthComponent 现在接受 'contain' 密钥以在会话中存储额外信息。我已经检查过 3.0,它仍然支持包含

'Auth' => [ 
   'authorize' => 'Controller', 
   'userModel' => 'CakeManager.Users', 
   'authenticate' => [ 
      'Form' => [ 
         'contain' => [ 'Roles' ],
   ]
]

查看 this 示例以了解如何更改默认 AuthComponent 配置。

参考:https://gitter.im/cakemanager/cakephp-cakemanager?at=556389082e564d1f3abefc04