创建服务以访问数据库时BindingResolutionException

时间:2014-05-21 12:38:19

标签: laravel models

我们正在尝试实现以下文章中建议的体系结构,以使我们的应用程序可扩展

http://dfg.gd/blog/decoupling-your-code-in-laravel-using-repositiories-and-services

文章将模型分为以下

  • 实体 - 正常的雄辩课程
  • 存储库 - 这些使用实体获取数据
  • 服务 - 包含业务逻辑

尝试我们尝试访问小型表的架构

我们创建了以下类

  • app / models / entities / Reminder.php //普通的Eloquent模型
  • 应用程序/模型/库/提醒/ ReminderInterface.php
  • 应用程序/模型/库/提醒/ ReminderRepository.php
  • 应用程序/模型/库/提醒/ ReminderRepositoryServiceProvider.php
  • 应用程序/模型/服务/提醒/ ReminderFacade.php
  • 应用程序/模型/服务/提醒/ ReminderService.php
  • 应用程序/模型/服务/提醒/ ReminderServiceServiceProvider.php

我们对以下错误感到震惊

Illuminate \ Container \ BindingResolutionException 
Target [Repositories\Reminder\ReminderInterface] is not instantiable.

有人可以指导可能出现的问题吗?

我们的代码与文章中的代码完全相同。我试图在此说明中简要介绍,因为所有7个类的发布代码都不合理。如果您需要任何细节,请告诉我。

1 个答案:

答案 0 :(得分:5)

选项1

您可能缺少绑定:

App::bind('Repositories\Reminder\ReminderInterface', 'Repositories\Reminder\ReminderRepository');

如果您没有告诉Laravel您需要将接口实现为实例化,它将尝试实例化ReminderInterface,这不是可实例化的,如错误所示。

选项2

如果您在服务提供商中绑定它,则必须通过将其添加到app/config/app.php来确保您的服务提供商正在执行?