首页 文章

Cakephp 3 findAuth连接表返回数组

提问于
浏览
2

我正在尝试使用自定义查找器实现基于角色的身份验证系统 .

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 user.id,username,passwordHash,locked,group_concat(roles.role)来自用户的角色INNER JOIN user_roles上的user_roles.userid = users.id角色上的INNER JOIN角色.id = user_roles.role group by users.id

1 回答

  • 0

    我最终最终得到的是:

    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;
    }
    

    这给了我一个多维数组:user_roles [index [id,user_id,roles [id,role]]]

    在我的情况下,我有2个索引条目(0和1),我可以在foreach循环中检查用户与in_array函数的角色

相关问题