我正在尝试使用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'
);
}
任何帮助表示赞赏!
答案 0 :(得分:3)
除非您自己添加合同,否则该合同不存在。 Illuminate\Contracts\Redis\Database
存在,但不存在您尝试使用的内容。
对于一个解决方案,我通常会注入Illuminate\Database\DatabaseManager
类,我相信这是你想要获得的类。该类实现了Illuminate\Database\ConnectionResolverInterface
接口。