Ошибка авторизации Laravel 9

Установлена laravel 9, при попитке авторизации в контроллере выдает ошибку:

Illuminate\Auth\SessionGuard::login(): Argument #1 ($user) must be of type Illuminate\Contracts\Auth\Authenticatable, stdClass given, called in /Users/andrii/Documents/www/budver/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php on line 332

Код контроллера:

namespace App\Http\Controllers;

use App;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Jobs\NeedHelpMailJob;


class MainController extends Controller {

    public function index() {

        $user = DB::table('users')->where('id', 1)->get()->first() ;
        if(!auth()->check()) auth()->login($user) ;

        return view('home') ;

    }

}

Дамп объекта $user:

^ {#314 ▼
  +"id": 1
  +"phone": "1111111111"
  +"email": null
  +"type": "client"
  +"is_status": "active"
  +"name": "Test"
  +"avatar": null
  +"email_verified_at": null
  +"about": null
  +"created_at": "2022-06-21 08:48:47"
  +"updated_at": null
}

В чем может быть ошыбка?


Ответы (1 шт):

Автор решения: adobrovolsky

Ошибка в том, что Вы используете запрос через DB::table(), оттуда достается не конкретная модель, а stdClass, для авторизации же нужна модель User которая унаследована от Authenticatable, делайте запрос User::query()->where('id', 1)->first() и будет все работать.

→ Ссылка