How to get User()->id in Controllers (Laravel 8+) How to get User()->id in Controllers (Laravel 8+) laravel laravel

How to get User()->id in Controllers (Laravel 8+)


If you need user id, just use one of this :

auth()->id();

using Auth facade's

\Auth::id();

or, using Request instance

$request->user()->id

Follow this simple controller code, i showed 3 different way here :

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use Illuminate\Support\Facades\Auth;class SomeController extends Controller{    public function __construct()    {        $this->middleware('auth');    }    public function getUserId(Request $request)    {        $user = Auth::user(); // Retrieve the currently authenticated user...        $id = Auth::id(); // Retrieve the currently authenticated user's ID...                $user = $request->user(); // returns an instance of the authenticated user...        $id = $request->user()->id; // Retrieve the currently authenticated user's ID...                $user = auth()->user(); // Retrieve the currently authenticated user...        $id = auth()->id();  // Retrieve the currently authenticated user's ID...    }}


Auth::user()->id;

This should work if you have Auth middleware on that controller method where you try to get it, please check do you added that middleware.For checking you can use php arisan route:list command.


Is someone still searching an answer on this question. I have some explanation how can you do this.

Laravel has a Router which routes authorization process through that Controller which you want, so you should redirect that process on your Router and in Controller create constructor which allows you to take user id.

How can you do that?:

1. First of all you should find Controller and Route which responsible for authorization and registration users.In my case it was:a)App\Http\Controllers\HomeControllerb)routes\web.php

2. Second, you should redirect your authorization Router to the Controller where you trying to get Auth::id();In my case it was:App\Http\Controllers\TasksController

so, in routes\web.php I did this:

    //wasRoute::get('/', [App\Http\Controllers\HomeController::class, 'index'])->name('home');    //was    Auth::routes();    //was    Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');    //added    Auth::routes();    //added    Route::get('/home', [App\Http\Controllers\TasksController::class, 'index'])->name('home');

perhaps you should have index function on that controller

3. Third you should add constructor in your controller where you want to get user id, this constructor I took from HomeController, it already was there.In my case it was:

    public function __construct()    {        $this->middleware('auth');    }

code with function on my TasksController:

    public function __construct()    {        $this->middleware('auth');    }           public function index()    {                      $userId = Auth::check() ? Auth::id() : true;           }

And now I can take user id.PS: constructor I added on the top in class TasksController in Controller