Search code examples
laravellaravel-passport

Laravel with multiple database


I have laravel project used for apis(Passport). It uses multiple databases one database stores user information and the database name for that user. I created a BaseController, all the other controllers extends from this controller. But I am not able to fetch Auth::id(); from the BaseController. How can I get the Auth::id in the constructor?

class BaseController extends Controller

{  
     protected $companySchema;

     public function __construct() {        
     $user =  \App\User::where('user_id', Auth::id())->first();
     $company =  $user->company;
     $this->companySchema = $company->cmp_Schema;    
     }
}

Solution

  • After laravel 5.3.4 you can't use Auth::user() in the constructor because the middleware isn't run yet.

    class BaseController extends Controller {
    
        public function __construct() { 
    
            $this->middleware(function ($request, $next) {
                $this->companySchema = Auth::user()->company->cmp_Schema;
    
                return $next($request);
            });
    
        }
    
    }
    

    try this code and tell me if it works