我创建了一个提供者并链接了存储库,但我得到了错误:
异常:"Illuminate\Contracts\Container\BindingResolutionException";文件:"vendor/laravel/framework/src/Ilightaine/Container.php";线路:1038消息:";在构建[App\Http\Controllers\Api\V1\User\RoleController,App\Repository\Model\RoleRepository]时,目标[IIlluminate\Database\Eloquent\Model]不可实例化"跟踪:[,…]
命名空间:SpatiePermissionModelsRole;
和SpatiePermissionModelsPermission;
存储库服务提供商:
class RepositoryServiceProvider extends ServiceProvider
{
// ...
$this->app->bind(ModelRepositoryInterface::class, function() {
return new PermissionRepository(new Permission);
});
// ...
}
调试期间,安装了dd(new Role)
。得到了这个错误:
"对null上的成员函数connection((的调用";
问题出在哪里?
因为我使用相同的接口,但使用不同的类(控制器(,所以它们需要像这样绑定:
$this->app->when(RoleController::class)
->needs(ModelRepositoryInterface::class)
->give(function () {
return new RoleRepository(new Role);
});
$this->app->when(PermissionController::class)
->needs(ModelRepositoryInterface::class)
->give(function () {
return new PermissionRepository(new Permission);
});
请参阅文档。