Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Lumen Call to a member function connection() on null

I'm receiving this error when trying to use an Eloquent Model in Lumen.

Call to a member function connection() on null

Controller func:

/**      * Display a listing of the resource.      *      * @return \Illuminate\Http\Response      */     public function index(Request $request)     {          $employees = Employee::orderBy('first_name', 'asc')->get(); dd($employees);          $response['precontent'] = view('admin::employee.search')->render();          $response['content'] = view('admin::employee.index')             ->with(['employees' => $employees])             ->render();          $response['title'] = 'Employees';          return $response;       } 

Model:

    <?php     namespace App;  use Illuminate\Database\Eloquent\Model;  class Employee extends Model  {      protected $table = 'system_core.employees';      protected $fillable = [         'user_id',         'first_name',         'last_name',         'position',         'primary_address',         'secondary_address',         'phone_1',         'phone_2',         'birth_date',         'start_date',         'end_date'     ];  } 

I'm pretty experienced with Laravel, but just started my first Lumen project for mere API use and I'm not sure why this error is being thrown. Perhaps it's just my connection settings? Would all queries have to be run the following way?:

$results = app('db')->select("SELECT * FROM users"); 

Thank you!

like image 366
bi4nchi Avatar asked May 20 '16 15:05

bi4nchi


2 Answers

You should uncomment the Eloquent $app->withEloquent() call in bootstrap/app.php.

https://lumen.laravel.com/docs/5.2/database#basic-usage

Update:

Latest version of the docs https://lumen.laravel.com/docs/5.8/database, check section Eloquent ORM

like image 133
thefallen Avatar answered Sep 18 '22 14:09

thefallen


As per 2021 here is the check list to check against to fix this error.

You have to:

  1. Create the database manually via e.g. PHPMyAdmin;
  2. Configure the database connection it in the .env file (i.e. set DB_CONNECTION, DB_DATABASE, DB_USERNAME, DB_PASSWORD);
  3. As per above answers uncomment $app->withFacades();, $app->withEloquent(); lines in bootstrap/app.php;
  4. If you use your Eloquent model within PHPUnit tests you have to boot the Lumen (or Laravel) first by adding the following line to your test class setUp() method:
    parent::setUp() 

That should fix it.

like image 44
Valentine Shi Avatar answered Sep 18 '22 14:09

Valentine Shi