我正在尝试使用与mongoDB配合使用的外观,但无法在自定义包中使用它。
我的程序包可以单独正常工作,并且可以在程序包外部调用外观,而不会出现问题。
我正在用composer加载我的软件包,如下所示:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/",
"Insight\\": "packages/test"
}
},
我遵循了有关制作外墙的一些教程。 Link to tutorial
我确实将外观重命名为mongoDatabase,它在我的控制器中(在我的程序包之外)运行良好。
public function __construct(EmailRepository $emailRepository)
{
$this->emailRepository = $emailRepository;
}
public function store()
{
$this->emailRepository->store(['plain' => 'test']);
}
在我的存储库中,我创建了一个抽象类,该类实际上加载了外观。
/**
* AbstractRepository constructor.
*
* @param \mongoDatabase $mongoDatabase
*/
public function __construct(\mongoDatabase $mongoDatabase)
{
$db = Config('services.mongo.database');
$this->collection = $mongoDatabase::get()->selectCollection($db, $this->table);
}
但是,从我的程序包中调用emailRepository时,会出现以下错误:
Call to undefined method App\mongoDatabase\Facade::get()
现在,我不确定在尝试将其命名为包裹时是否能够到达立面?我的程序包是否在外观之前加载,从而使其不了解外观的get功能? 还是我错过了我需要做的其他事情才能允许我的包裹装载外墙?