Reputation: 539
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
Reputation: 7800
You have to:
.env
file (i.e. set DB_CONNECTION
, DB_DATABASE
, DB_USERNAME
, DB_PASSWORD
);$app->withFacades();
, $app->withEloquent();
lines in bootstrap/app.php
;setUp()
method:
parent::setUp()
Upvotes: 19
Reputation: 1
Go to bootstrap/app.php
then uncomment
$app->withEloquent();
worked for me!
Upvotes: -1
Reputation: 1056
I've tried different solutions but seems like problem was very simple.
composer du
works for me.
Upvotes: 1
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
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
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