В CakePHP 3.6, Как изменить запрос пользователя для компонента auth?

Для cakephp 3.6, cakephp.org расскажет, как настроить запрос поиска пользователя для компонента auth по следующей ссылке: ссылка Но я не понимаю, как это реализовать? У меня есть столбец департамента в таблице пользователей, которая принадлежит таблице отделов. Я хочу изменить следующий запрос:

public function findAuth(){
    $query
    ->select(['id', 'username', 'password'])->contain(['Departments'])
        ->where(['Users.active' => 1]);
    return $query;
}

Будет ли работать приведенный выше код? Подскажите пожалуйста, в каком файле я должен написать функцию? И каковы другие необходимые шаги, чтобы сделать это, чтобы я получил всю информацию, относящуюся к пользователю, в $this->Auth->User?

1 ответ

Решение

Во-первых, вам нужно будет загрузить компонент Auth и передать пользовательскую конфигурацию в любой контроллер, для которого вы хотите использовать пользовательский искатель, например:

public function initialize()
{
    parent::initialize();
    $this->loadComponent('Auth', [
        'authenticate' => [
            'Form' => [
                'finder' => 'auth'
            ]
        ],
    ]);
}

затем в вашем UsersTable у вас будет пользовательский искатель:

public function findAuth(\Cake\ORM\Query $query, array $options)
{
    $query
    ->select(['id', 'username', 'password'])->contain(['Departments'])
    ->where(['Users.active' => 1]);

    return $query;
}

Этот ответ также может помочь Содержащиеся таблицы в пользовательских средствах поиска

Другие вопросы по тегам