Cakephp 3 findAuth 加入 table return 数组
Cakephp 3 findAuth join table return array
我正在尝试使用自定义查找器实现基于角色的身份验证系统。
public function findAuth(\Cake\ORM\Query $query, array $options)
{
$query
->select(['id', 'username', 'passwordHash', 'locked', 'roles.role'])
->group('username')
->join([
'table' => 'user_roles',
'conditions' => ['user_roles.userid = Users.id']])
->join([
'table' => 'roles',
'conditions' => ['roles.id = user_roles.role']])
->toArray()
;
return $query;
}
我需要的结果 mysql 查询是:
select users.id,用户名,passwordHash,已锁定,group_concat(roles.role)来自用户的角色 INNER JOIN user_roles on user_roles.userid = users.id roles.id = user_roles.role 上的 INNER JOIN 角色按 users.id
分组
我最终得出的结论是:
public function findAuth(\Cake\ORM\Query $query, array $options)
{
$query
->select(['id', 'username', 'passwordHash', 'locked'])
->join([
'table' => 'user_roles',
'conditions' => ['user_roles.user_id = Users.id']])
->contain(['UserRoles.Roles'])
->join([
'table' => 'roles',
'conditions' => ['roles.id = user_roles.role']])
->group(['Users.username']);
return $query;
}
这给了我一个 multi-dimensional 数组:
user_roles[索引[id, user_id, 角色[id, 角色]]]
在我的例子中,我有 2 个索引条目(0 和 1),我可以使用 foreach 循环中的 in_array 函数检查用户的角色
我正在尝试使用自定义查找器实现基于角色的身份验证系统。
public function findAuth(\Cake\ORM\Query $query, array $options)
{
$query
->select(['id', 'username', 'passwordHash', 'locked', 'roles.role'])
->group('username')
->join([
'table' => 'user_roles',
'conditions' => ['user_roles.userid = Users.id']])
->join([
'table' => 'roles',
'conditions' => ['roles.id = user_roles.role']])
->toArray()
;
return $query;
}
我需要的结果 mysql 查询是: select users.id,用户名,passwordHash,已锁定,group_concat(roles.role)来自用户的角色 INNER JOIN user_roles on user_roles.userid = users.id roles.id = user_roles.role 上的 INNER JOIN 角色按 users.id
分组我最终得出的结论是:
public function findAuth(\Cake\ORM\Query $query, array $options)
{
$query
->select(['id', 'username', 'passwordHash', 'locked'])
->join([
'table' => 'user_roles',
'conditions' => ['user_roles.user_id = Users.id']])
->contain(['UserRoles.Roles'])
->join([
'table' => 'roles',
'conditions' => ['roles.id = user_roles.role']])
->group(['Users.username']);
return $query;
}
这给了我一个 multi-dimensional 数组: user_roles[索引[id, user_id, 角色[id, 角色]]]
在我的例子中,我有 2 个索引条目(0 和 1),我可以使用 foreach 循环中的 in_array 函数检查用户的角色