资讯专栏INFORMATION COLUMN

laravel安装jenssegers/laravel-mongodb拓展,以及遇到的坑

fizz / 3573人阅读

摘要:再次打开包内源码,发现了如下的细节敲黑板注意看路径,此时是包内知道原理之后,于是在配置文件中做了如下修改至此,,收工

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

包安装
1、根据README,找到本地laravel对应的包版本

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

3、配置config/app.php

        /*
         * mongoDB
         */
        JenssegersMongodbMongodbServiceProvider::class,
4、database.php 配置
"mongodb" => [
      "driver" => "mongodb",
      "host" => "127.0.0.1",
      "port" => 27017,
      "database" => "data",
      "username" => "test",
      "password" => "test",
   ],

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

"default" => env("DB_CONNECTION", "mysql"),
5、代码中使用
// 获取数据
        $mongo = DB::connection("mongodb")
            ->collection($collection)
//            ->where("****","***")
            ->first();
问题
1、unsupported driver [mongodb]

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

Type error: Argument 3 passed to MongoDBDriverServer::executeQuery() must be an instance of MongoDBDriverReadPreference or null, array given {"exception":"[object] (SymfonyComponentDebugExceptionFatalThrowableError(code: 0): Type error: Argument 3 passed to MongoDBDriverServer::executeQuery() must be an instance of MongoDBDriverReadPreference or null, array given at F:projectinterface_center_jtlvendormongodbmongodbsrcOperationFind.php:299)

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

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

2、Authentication failed.

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

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

 // %40是@符号的转义
 $manager = new MongoDBDriverManager("mongodb://mongo:user:passwd%40abcdef@127.0.0.1:27017");
 $query=new MongoDBDriverQuery([]);
 $cursor = $manager->executeQuery("test.test", $query);
 dd($cursor);

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

 $manager = new MongoDBDriverManager("mongodb://mongo:user:passwd%40abcdef@127.0.0.1:27017/data");

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

·在和运维与测试沟通了之后,为了保持线上版本的稳定性和敏捷开发的机动性,遂决定做代码兼容。
再次打开包内源码,发现了如下的细节(敲黑板:注意看路径,此时是jenssegers包内)

知道原理之后,于是在配置文件中做了如下修改:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19525.html

相关文章

  • laravel安装jenssegers/laravel-mongodb拓展以及遇到的坑

    摘要:再次打开包内源码,发现了如下的细节敲黑板注意看路径,此时是包内知道原理之后,于是在配置文件中做了如下修改至此,,收工 项目中使用了mongoDB,所以就到最大的同性交友网站找到了星星最多的jenssegers/laravel-mongodb 包安装 1、根据README,找到本地laravel对应的包版本showImg(https://segmentfault.com/img/bVbr...

    icattlecoder 评论0 收藏0
  • Laravel优秀扩展包整理

    摘要:本文整理上国内相对较常用及以上版本的扩展包代码生成文档对象云存储文档消息闪存文档编辑器代码提示文档文档文档图片处理文档微信开发文档语言包文档验证码文档社会化登陆文档系统日志文档前端构建工具文档跨域资源共享文档基于的用户认 本文整理Github上国内相对较常用Laravel5及以上版本的扩展包 laravel-generator(代码生成) Github:https://github....

    lykops 评论0 收藏0
  • Laravel优秀扩展包整理

    摘要:本文整理上国内相对较常用及以上版本的扩展包代码生成文档对象云存储文档消息闪存文档编辑器代码提示文档文档文档图片处理文档微信开发文档语言包文档验证码文档社会化登陆文档系统日志文档前端构建工具文档跨域资源共享文档基于的用户认 本文整理Github上国内相对较常用Laravel5及以上版本的扩展包 laravel-generator(代码生成) Github:https://github....

    kel 评论0 收藏0
  • Laravel优秀扩展包整理

    摘要:本文整理上国内相对较常用及以上版本的扩展包代码生成文档对象云存储文档消息闪存文档编辑器代码提示文档文档文档图片处理文档微信开发文档语言包文档验证码文档社会化登陆文档系统日志文档前端构建工具文档跨域资源共享文档基于的用户认 本文整理Github上国内相对较常用Laravel5及以上版本的扩展包 laravel-generator(代码生成) Github:https://github....

    LdhAndroid 评论0 收藏0
  • 基于 Laravel 开发 ThinkSNS+ 中前端的抉择(webpack/Vue)踩坑日记【社交

    摘要:在上一篇文章基于分支,从到,再到,简单的介绍了这里分享在开发过程中,前端选择的心理活动。而作为核心开发之一,也负责前端这块的开发。 在上一篇文章《 ThinkSNS+基于Laravel master分支,从1到 0,再到0.1》,简单的介绍了 ThinkSNS+ ,这里分享在开发过程中,前端选择的心理活动。 Laravel Mix的放弃 在 Laravel 中,前端工作流默认是由 la...

    songze 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<