Heim > PHP-Framework > Laravel > Hauptteil

Ausführliche Erklärung zur Installation der Erweiterung „jenssegers/laravel-mongodb' in Laravel

藏色散人
Freigeben: 2021-07-19 08:59:15
nach vorne
2333 Leute haben es durchsucht

项目中使用了mongoDB,所以就到最大的同性交友网站找到了星星最多的jenssegers/laravel-mongodb

包安装

1、根据README,找到本地laravel对应的包版本
Ausführliche Erklärung zur Installation der Erweiterung „jenssegers/laravel-mongodb in Laravel

2、开发环境中使用 composer requir 引入

3、配置config/app.php

        /*
         * mongoDB
         */
        Jenssegers\Mongodb\MongodbServiceProvider::class,
Nach dem Login kopieren
4、database.php 配置
"mongodb" => [
      "driver" => "mongodb",
      "host" => "127.0.0.1",
      "port" => 27017,
      "database" => "data",
      "username" => "test",
      "password" => "test",
   ],
Nach dem Login kopieren

:如果项目不涉及到mysql,那么可以直接将上面的默认数据引擎改成mongodb,关于env方法的说明就不具体阐述了

'default' => env('DB_CONNECTION', 'mysql'),
Nach dem Login kopieren
5、代码中使用
// 获取数据
        $mongo = \DB::connection("mongodb")
            ->collection($collection)
//            ->where("****","***")
            ->first();
Nach dem Login kopieren

问题

1、unsupported driver [mongodb]

tip1检查phpinfo是否包含mongoDB拓展,如果没有mongoDB的拓展,请自行安装再试
tip2重点!一定要检查laravel的日志文件
在我检查了mongoDb拓展之后还是不支持,查看日志:

Type error: Argument 3 passed to MongoDB\Driver\Server::executeQuery() must be an instance of MongoDB\Driver\ReadPreference or null, array given {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Type error: Argument 3 passed to MongoDB\\Driver\\Server::executeQuery() must be an instance of MongoDB\\Driver\\ReadPreference or null, array given at F:\\project\\interface_center_jtl\\vendor\\mongodb\\mongodb\\src\\Operation\\Find.php:299)
Nach dem Login kopieren

追到具体的位置,通过修改此处的返回,再次打印,发现已经可以正常使用get/first方法。insert方法同理,不过是修改同目录下的InsertMany

Ausführliche Erklärung zur Installation der Erweiterung „jenssegers/laravel-mongodb in Laravel

!!从源头解决这个问题的正确方法,查看phpinfo里面,将mongo的拓展,升级到最新的stable版本!具体请查看我以前的文章centos源码安装php7以上的mongodb拓展,如果是windows,直接下载dll文件就行了

2、Authentication failed.

tip1检查密码账号,再用工具连接,看看是不是自己配置错误

tip2使用原生方法进行测试,如果原生能够连接,包方法却不能连接,那就考虑包的问题

 // %40是@符号的转义
 $manager = new \MongoDB\Driver\Manager("mongodb://mongo:user:passwd%40abcdef@127.0.0.1:27017");
 $query=new \MongoDB\Driver\Query([]);
 $cursor = $manager->executeQuery('test.test', $query);
 dd($cursor);
Nach dem Login kopieren

·如上,发现依旧不能连接,考虑mongo的问题了,再次测试,同事发现连接写法经过修改之后就能成功!如下:

 $manager = new \MongoDB\Driver\Manager("mongodb://mongo:user:passwd%40abcdef@127.0.0.1:27017/data");
Nach dem Login kopieren

·百思不得骑姐之下,对比了mongoDB的版本,发现测试环境居然是个老版本。。/手动喷血

·在和运维与测试沟通了之后,为了保持线上版本的稳定性和敏捷开发的机动性,遂决定做代码兼容。
再次打开包内源码,发现了如下的细节(敲黑板:注意看路径,此时是jenssegers包内)
Ausführliche Erklärung zur Installation der Erweiterung „jenssegers/laravel-mongodb in Laravel知道原理之后,于是在配置文件中做了如下修改:

Ausführliche Erklärung zur Installation der Erweiterung „jenssegers/laravel-mongodb in Laravel

至此,add、commint、push,收工!

相关推荐:最新的五个Laravel视频教程

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Installation der Erweiterung „jenssegers/laravel-mongodb' in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage