我正在使用带有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被设置为不检索断言。
我的问题是我不知道如何覆盖它。
答案 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