Mongodb используется в проекте, поэтому мы нашли jenssegers/laravel mongodb с наибольшим количеством звезд на крупнейшем сайте знакомств для однополых пар.
Установка пакета
1. Найдите версию пакета, соответствующую локальному laravel, в соответствии с readme.
2. Используйте composer require в среде разработки
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. Использование в коде
//Get data $mongo = \DB::connection("mongodb") ->collection($collection) // ->where("****","***") ->first();
проблема
1、неподдерживаемый драйвер [mongodb]
совет 1
Проверьте, включает ли phpinfo расширение mongodb. Если расширения mongodb нет, пожалуйста, установите его самостоятельно и повторите попытку. совет 2
Ключ! Обязательно проверьте файл журнала 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 до последней стабильной версии! Пожалуйста, обратитесь к моей предыдущей статье, установка исходного кода CentOS, расширение mongodb выше php7. Если это Windows, загрузите DLL-файл напрямую.
2.Сбой аутентификации.
совет 1
Проверьте учетную запись с паролем, а затем подключитесь к инструменту, чтобы узнать, не ошиблась ли конфигурация.
совет 2
Используйте собственные методы для тестирования. Если собственные методы могут подключаться, но методы пакета не могут, рассмотрите проблемы с пакетами.
//% 40 is an escape of the @ symbol $manager = new \MongoDB\Driver\Manager("mongodb://mongo:user:passwd%[email protected]:27017"); $query=new \MongoDB\Driver\Query([]); $cursor = $manager->executeQuery('test.test', $query); dd($cursor);
·
Как и выше, мы обнаружили, что все еще не можем подключиться. Учитывая проблему Монго, мы протестировали ее еще раз и обнаружили, что метод записи соединений может быть успешным после изменения! Следующим образом:
$manager = new \MongoDB\Driver\Manager("mongodb://mongo:user:passwd%[email protected]:27017/data");
·
После сравнения версии mongodb мы обнаружили, что тестовая среда является старой версией./Ручное распыление крови
·
После общения с O & M и тестирования, чтобы сохранить стабильность онлайн-версии и гибкость гибкой разработки, мы решили обеспечить совместимость кода. Снова откройте исходный код в пакете и найдите следующие сведения (постучите по доске: обратите внимание на путь, это пакет jenssegers) После ознакомления с принципом мы внесли следующие изменения в файл конфигурации:
На этом этапе добавьте, распространите, нажмите и закончите!