php - 在 Repository 类中注入(inject) DatabaseManager

标签 php laravel lumen

我正在使用 Lumen 并尝试在 Repository 类中注入(inject) 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

执行此操作的最佳方法是什么。请建议。谢谢

最佳答案

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

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

默认情况下,Lumen 不会执行此操作,因此您必须在 Bootstrap 代码中的某处手动执行此操作。这告诉 IoC 通过服务定位器使用 db 解析 Illuminate\Database\DatabaseManager

或者,您可以执行以下操作:

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

关于php - 在 Repository 类中注入(inject) DatabaseManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31126388/

相关文章:

javascript - 单击按钮后显示不同的消息 - PHP

php - 使用 Redis 和 MySQL 加载和更新数据的最佳实践是什么?

php - Lumen - 在运行时创建数据库连接

laravel - 如何在 Laravel 的 Multi-Tenancy 设置中使用 Passport

php - Laravel/流明 PSR-4 : If I put classes into subdirectories do I have to use different namespaces then?

PHP 和 MySQL 内容显示乱序

php - 使用变量位置的 file_get_contents() 的安全漏洞

php - 追踪段错误 11 到大型 PHP 代码库

database - Laravel:连接错误 PDO

php - 在 Laravel 5 的存储库中使用构造函数注入(inject)有什么好处?