调用null上的成员函数connection()是我在Lumen中尝试使用Eloquent模型时收到的错误。
控制器功能:
/**
* 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;
}
型号:
<?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'
];
}
我对Laravel非常有经验,但刚开始我的第一个Lumen项目仅用于API,我不确定为什么会抛出这个错误。也许只是我的连接设置?所有查询都必须按以下方式运行吗?:
$results = app('db')->select("SELECT * FROM users");
谢谢!
答案 0 :(得分:80)
您应该在bootstrap/app.php
中启用Eloquent,如$app->withEloquent()
。
https://lumen.laravel.com/docs/5.2/database#basic-usage
<强>更新强>
最新版本的文档https://lumen.laravel.com/docs/5.8/database,请查看 Eloquent ORM
部分正如Marc Brillault的评论中所提到的,您可能还需要评论$app->withFacades();
。
答案 1 :(得分:14)
根据2020,这是要纠正此错误的检查清单。
您必须:
.env
文件中(即设置DB_CONNECTION
,DB_DATABASE
,DB_USERNAME
,DB_PASSWORD
); $app->withFacades();
,$app->withEloquent();
中的bootstrap/app.php
行; setUp()
boot the Lumen中来method(或Laravel):
parent::setUp()
那应该解决它。
答案 2 :(得分:3)
我想你只是在 $app->withFacades();
中取消注释 $app->withEloquent();
, bootstrap/app.php;
行
再检查一下,它对我有用。
答案 3 :(得分:2)
转到bootstrap/app.php
然后取消注释
$app->withEloquent();
答案 4 :(得分:0)
此错误的另一个不太常见的原因是您试图在 eloquent 模型准备好之前访问它,例如在 Job
的构造函数中或可能在 app/Console/Kernel.php
如果是这种情况,请尝试这样做
use Illuminate\Support\Facades\DB;
$model = DB::table('table_name')
->where('field_name', 'field_value')->first()