I am trying to access Auth::user()->id;
inside constructor but it always return the error Trying to get property of non-object. I study in t
To solve this problem App\Providers\AppServiceProvider
was indeed my first guess. This would work mostly but with an exception to access Session
data.
So If you try to access Session
data within boot method of AppServiceProvider you will get null
. So to do this so it works perfectly good in any case Middleware
is a good option. You can write this logic of sharing a variable to all your desired views. Just create a middleware
and include that in your route
or routegroup
.
To share a variable in view AppServiceProvider is a good approach
Go to App\Providers\AppServiceProvider.php
Include facade on top of the page
use Illuminate\Support\Facades\Auth;
use App\TrainingStatusRecord;
and paste below code in boot method
view()->composer('*', function($view){
if(Auth::user()){
$induction_status = TrainingStatusRecord::where('user_id',Auth::user()->id)->where('training','=','induction')->get();
View::share('induction_status',$induction_status);
}
});
Now you will be able to get your variable $induction_status
in your app.
Reference https://laravel.com/docs/5.4/providers#the-boot-method
Hope it will help you.
Try this:
public function __construct(){
$this->middleware(function ($request, $next) {
$induction_status = TrainingStatusRecord::where('user_id',Auth::user()->id)->where('training','=','induction')->get();
}
View::share('induction_status',$induction_status);
}