【问题标题】:How can I solve Target [App\Repositories\NewsRepository] is not instantiable while building [App\Http\Controllers\Member\NewsController].?如何解决目标 [App\Repositories\NewsRepository] ​​在构建 [App\Http\Controllers\Member\NewsController] 时不可实例化。?
【发布时间】:2017-08-30 09:32:44
【问题描述】:

我的控制器是这样的:

...
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));
    }
}

我的仓库服务商是这样的:

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

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

(1/1) BindingResolutionException 目标 [App\Repositories\NewsRepository] ​​在构建时不可实例化 [App\Http\Controllers\Member\NewsRepository]。

我该如何解决这个错误?

【问题讨论】:

标签: laravel repository laravel-5.4


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 2018-01-25
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多