在存储库类中注入DatabaseManager

时间:2015-06-29 22:07:12

标签: php laravel lumen

我正在使用Lumen并试图在Repository Class中注入DatabaseManager来运行一些查询而不支持DB facade和Eloquent

我试过以下......

use Illuminate\Database\DatabaseManager;

    class Myclass
    {
        public function __construct(DatabaseManager $database)
        {
            $this->db = $database;
        }

      public function blah()
      {
        $this->db->connection()->table('table')->select('*');
      }
    }

但是我得到了以下错误......

BindingResolutionException in Container.php line 823:
Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Database\DatabaseManager

这样做的最佳方法是什么。请建议。感谢

1 个答案:

答案 0 :(得分:0)

如果你想注入DatabaseManager,那么你需要将它绑定到容器,以便它知道如何实例化它:

$app->alias('db', 'Illuminate\Database\DatabaseManager');

默认情况下,Lumen不会这样做,所以你必须在你的bootstrap代码中的某个地方手动完成。这告诉IoC通过服务定位器使用Illuminate\Database\DatabaseManager来解析db

或者你可以做到以下几点:

app()->make('db');