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

时间:2015-05-23 14:10:43

标签: cakephp-3.0

我正在使用带有cakePHP 3的cakeManager插件来管理用户。我有两个用户角色企业和员工,我有每个表都有附加信息。

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

商业模式:

/**
 * 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'
        ]);
    }
}

我已将商业协会直接添加到插件中,以检查是否是模型扩展的问题。

查看返回的对象,我看到Roles模型关联也没有返回,所以我怀疑是插件find被设置为不检索断言。

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

1 个答案:

答案 0 :(得分:2)

从CakePHP 2.2(http://bakery.cakephp.org/articles/lorenzo/2012/07/01/cakephp_2_2_and_2_1_4_released)开始,AuthComponent现在接受“包含”键,用于在会话中存储额外信息。我已经用3.0检查了它仍然支持包含

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

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

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