您好,欢迎访问一九零五行业门户网

详解laravel如何安装jenssegers/laravel-mongodb扩展

laravel安装jenssegers/laravel-mongodb拓展,以及遇到的坑项目中使用了mongodb,所以就到最大的同性交友网站找到了星星最多的jenssegers/laravel-mongodb
包安装1、根据readme,找到本地laravel对应的包版本
2、开发环境中使用 composer requir 引入
3、配置config/app.php
        /*         * mongodb         */        jenssegers\mongodb\mongodbserviceprovider::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 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)
追到具体的位置,通过修改此处的返回,再次打印,发现已经可以正常使用get/first方法。insert方法同理,不过是修改同目录下的insertmany
!!从源头解决这个问题的正确方法,查看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);
·如上,发现依旧不能连接,考虑mongo的问题了,再次测试,同事发现连接写法经过修改之后就能成功!如下:
 $manager = new \mongodb\driver\manager(mongodb://mongo:user:passwd%40abcdef@127.0.0.1:27017/data);
·百思不得骑姐之下,对比了mongodb的版本,发现测试环境居然是个老版本。。/手动喷血
·在和运维与测试沟通了之后,为了保持线上版本的稳定性和敏捷开发的机动性,遂决定做代码兼容。
再次打开包内源码,发现了如下的细节(敲黑板:注意看路径,此时是jenssegers包内)
知道原理之后,于是在配置文件中做了如下修改:
至此,add、commint、push,收工!
相关推荐:最新的五个laravel视频教程
以上就是详解laravel如何安装jenssegers/laravel-mongodb扩展的详细内容。
其它类似信息

推荐信息