我如何解决在构建[App \ Http \ Controllers \ Member \ NewsController]时无法实例化目标[App \ Repositories \ NewsRepository]的问题. [英] How can I solve Target [App\Repositories\NewsRepository] is not instantiable while building [App\Http\Controllers\Member\NewsController].?

查看:46
本文介绍了我如何解决在构建[App \ Http \ Controllers \ Member \ NewsController]时无法实例化目标[App \ Repositories \ NewsRepository]的问题.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的控制器是这样的:

...
use App\Repositories\NewsRepository;
class NewsController extends Controller
{
    protected $repository;
    public function __construct(NewsRepository $repository)
    {
        $this->repository = $repository;
    }
    public function store(NewsCreateRequest $request)
    {
        ...
        $news = $this->repository->create($input);
        ...
    }
}

我的界面是这样的:

namespace App\Repositories;
use Prettus\Repository\Contracts\RepositoryInterface;
interface NewsRepository extends RepositoryInterface
{
    //
}

我的班级是这样的:

...
use App\Repositories\NewsRepository;
class NewsRepositoryEloquent extends BaseRepository implements NewsRepository
{
    public function model()
    {
        return News::class;
    }
    public function boot()
    {
        $this->pushCriteria(app(RequestCriteria::class));
    }
}

我的存储库服务提供者是这样的:

My repository service provider like this :

...
class RepositoryServiceProvider extends ServiceProvider
{
    ...
    public function register()
    {
        ...
        $this->app->bind(\App\Repositories\NewsRepository::class, \App\Repositories\NewsRepositoryEloquent::class);
    }
}

如果执行了控制器上的方法存储,则存在错误:

If the method store on the controller executed, there exist error :

(1/1)BindingResolutionException目标[App \ Repositories \ NewsRepository]在构建时无法实例化[App \ Http \ Controllers \ Member \ NewsRepository].

(1/1) BindingResolutionException Target [App\Repositories\NewsRepository] is not instantiable while building [App\Http\Controllers\Member\NewsRepository].

如何解决该错误?

推荐答案

您必须将构造函数添加到存储库中,并为安装模型调用父构造函数,如下所示:

You have to add constructor to your repository and call parent constructor for setup model like this:

public function __construct(Permission $model)
{
    parent::__construct($model);
}

这篇关于我如何解决在构建[App \ Http \ Controllers \ Member \ NewsController]时无法实例化目标[App \ Repositories \ NewsRepository]的问题.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆