Ошибка авторизации 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() и будет все работать.