我正在尝试使用Laravel数据库契约,而不是facade(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'
);
}
感谢您的帮助!
除非您自己添加,否则该合同不存在。Illuminate'Contracts'Redis'Database
存在,但不是您想要使用的。
至于Solution,我通常会注入Illuminate'Database'DatabaseManager
类,我相信这就是您无论如何都要获得的类。该类实现了Illuminate'Database'ConnectionResolverInterface
接口。