PHP Lumen在null上调用成员函数connection()

时间:2016-05-20 15:30:20

标签: php laravel eloquent lumen

调用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");

谢谢!

5 个答案:

答案 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,这是要纠正此错误的检查清单。

您必须:

  1. 手动创建数据库;
  2. Configure数据库连接到.env文件中(即设置DB_CONNECTIONDB_DATABASEDB_USERNAMEDB_PASSWORD);
  3. 按照上述答案,uncomment $app->withFacades();$app->withEloquent();中的bootstrap/app.php行;
  4. 如果您在PHPUnit测试中使用Eloquent模型,则必须首先通过将以下行添加到测试类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()