bi4nchi
bi4nchi

Reputation: 539

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!

Upvotes: 48

Views: 64169

Answers (7)

Valentine Shi
Valentine Shi

Reputation: 7800

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()
    

Upvotes: 19

Whelmer Neto
Whelmer Neto

Reputation: 1

Go to bootstrap/app.php

then uncomment

$app->withEloquent();

worked for me!

Upvotes: -1

Afzal Ali
Afzal Ali

Reputation: 1056

I've tried different solutions but seems like problem was very simple.

composer du

works for me.

Upvotes: 1

Feisal Ali
Feisal Ali

Reputation: 367

Go to bootstrap/app.php

then uncomment

$app->withEloquent();

Upvotes: 9

Otobong Jerome
Otobong Jerome

Reputation: 496

Another less common reason for this error is that you are trying to access an eloquent model before it is ready, e.g in the constructor of a Job or perhaps in app/Console/Kernel.php

If this is the case, try doing this instead

use Illuminate\Support\Facades\DB;

$model =  DB::table('table_name')
            ->where('field_name', 'field_value')->first()

Upvotes: 2

Ankur prajapati
Ankur prajapati

Reputation: 517

I think you just uncomment $app->withFacades();, $app->withEloquent(); lines in bootstrap/app.php;

And check again, it works for me.

Upvotes: 3

thefallen
thefallen

Reputation: 9749

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

Upvotes: 149

Related Questions