1

I don't know the reason for malfunction of the following example:

Auth::user()->id 

However, just prefixing it with backslash makes it works fine:

\Auth::user()->id

This is a snippet from config/app.php

'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        'Auth' => Illuminate\Support\Facades\Auth::class,
        'Blade' => Illuminate\Support\Facades\Blade::class,
        'Broadcast' => Illuminate\Support\Facades\Broadcast::class,

The server is Apache on Ubuntu 16.04

SaidbakR
  • 13,303
  • 20
  • 101
  • 195

1 Answers1

2

That's how namespaces work.

When you're in a typical Laravel model, controller, etc., you're within its namespace - something like App or App\Http\Controllers or whatnot. As such, Auth::foo() means App\Auth::foo() or App\Http\Controllers\Auth::foo(), respectively.

This is why the examples that teach you how to use Auth all do use Illuminate\Support\Facades\Auth; before they use the Auth class, and say things like:

We will access Laravel's authentication services via the Auth facade, so we'll need to make sure to import the Auth facade at the top of the class.

ceejayoz
  • 176,543
  • 40
  • 303
  • 368