你遇到的错误提示表明在实例化 Jenssegers\Mongodb\Query\Builder
时,传递的参数不是 Jenssegers\Mongodb\Connection
的实例。这个错误通常是由于依赖注入或配置问题引起的。
Jenssegers\Mongodb\Connection
实例。确保在服务容器中正确注册了 Jenssegers\Mongodb\Connection
实例。例如,在 Laravel 中,可以在 config/app.php
中添加以下内容:
'providers' => [
// 其他服务提供者
Jenssegers\Mongodb\MongodbServiceProvider::class,
],
然后在 config/database.php
中配置 MongoDB 连接:
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'options' => [
'database' => 'admin', // required with Mongo 3+
],
],
如果依赖注入没有生效,可以尝试手动实例化 Jenssegers\Mongodb\Connection
:
use Jenssegers\Mongodb\Connection;
use Jenssegers\Mongodb\Query\Builder;
$connection = new Connection();
$queryBuilder = new Builder($connection);
确保 .env
文件中配置了正确的 MongoDB 连接参数:
DB_HOST=localhost
DB_PORT=27017
DB_DATABASE=mydatabase
DB_USERNAME=myuser
DB_PASSWORD=mypassword
以下是一个完整的示例,展示了如何在 Laravel 中正确配置和使用 Jenssegers\Mongodb
:
// config/app.php
'providers' => [
// 其他服务提供者
Jenssegers\Mongodb\MongodbServiceProvider::class,
],
// config/database.php
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
'options' => [
'database' => 'admin', // required with Mongo 3+
],
],
// .env
DB_HOST=localhost
DB_PORT=27017
DB_DATABASE=mydatabase
DB_USERNAME=myuser
DB_PASSWORD=mypassword
// 在控制器或其他地方使用
use Jenssegers\Mongodb\Query\Builder;
$queryBuilder = app()->make(Builder::class);
$collection = $queryBuilder->getCollection('mycollection');
$documents = $collection->find();
通过以上步骤,你应该能够解决 传递给 Jenssegers\Mongodb\Query\Builder::__construct() 的参数必须是 Jenssegers\Mongodb\Connection 的实例
的问题。
领取专属 10元无门槛券
手把手带您无忧上云