Laravel 5.1合同类不存在

时间:2015-12-04 15:03:49

标签: php laravel interface laravel-5.1

我正在尝试使用Laravel数据库合约而不是外观(DB :: table)并获取:

ReflectionException

Class Illuminate\Contracts\Database does not exist 

使用Illuminate\Database\DatabaseManager类工作正常,但除了依赖注入之外,我宁愿不使用具体类,而是使用抽象类(契约/接口)。

这是我尝试过的。

控制器:

<?php namespace App\Http\Controllers;

use Illuminate\Contracts\Database as DB;

class MyController extends Controller
{

    public function __construct(DB $db)
    {
        $this->db = $db;
    }

}

AppServiceProvider:

public function register()
    {
        $this->app->bind(
            'Illuminate\Contracts\Auth\Registrar',
            'App\Services\Registrar',
            'Illuminate\Contracts\Database'
        );
    }

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:3)

除非您自己添加合同,否则该合同不存在。 Illuminate\Contracts\Redis\Database存在,但不存在您尝试使用的内容。

对于一个解决方案,我通常会注入Illuminate\Database\DatabaseManager类,我相信这是你想要获得的类。该类实现了Illuminate\Database\ConnectionResolverInterface接口。