Аутентификация Laravel 5.7 без ошибки входа: свойство [id] не существует в этом экземпляре коллекции - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь принудительно выполнить аутентификацию без входа в систему с помощью Laravel 5.7 следующим образом:

public function login()
{

    $cpf = Request::only('cpf');
    $user = new User;
    $user = $user->where('cpf', $cpf)->get();
    Auth::loginUsingId($user->id);
    return redirect('/perfil');

}

И я получаю эту ошибку: Property [id] does not exist on this collection instance.

Когда я отлаживаю модель User,все атрибуты там.Но когда я пытаюсь получить атрибуты, я получаю эту ошибку.Что я делаю не так?

Если есть какой-либо другой способ аутентификации без пароля, было бы полезно!

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Вы не используете $user для чего-либо еще в методе, поэтому вам не нужен этот объект.Вместо этого вы можете использовать метод value(), чтобы получить идентификатор непосредственно из запроса.

public function login()
{

    $cpf = Request::only('cpf');

    // value() fetches the value of the specified column from the first row of query results
    $id = User::where('cpf', $cpf)->value('id');

    Auth::loginUsingId($id);
    return redirect('/perfil');

}

Хотя я не совсем уверен в части аутентификации.

0 голосов
/ 21 ноября 2018
public function login()
{

    $cpf = Request::only('cpf');
    $user = User::where('cpf', $cpf)->first();
    auth()->loginUsingId($user->id);

    return redirect('/perfil');

}
0 голосов
/ 21 ноября 2018

Если cpf является уникальным столбцом, то следующий объект вернет искомый объект:

$user = User::where('cpf', $cpf)->first();

Если вы сделаете -> get (), как в вашем коде, вы получитеКоллекция с ровно одним объектом, и нужно будет сделать $ user-> first () -> id.

https://laravel.com/api/5.6/Illuminate/Database/Eloquent/Builder.html#method_get

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...