Рубрики
Uncategorized

Laravel устанавливает расширения jenssegers / laravel-mongodb и обнаруженные ямы

Автор оригинала: David Wong.

В проекте использовался MongoDB, поэтому мы зашли на крупнейший сайт знакомств для однополых пар и нашли больше всего звезд, Jenssegers/laravel-mongodb .

Установка пакета

1. Найдите версию пакета, соответствующую локальному laravel, согласно README

2. Введение требования к композитору в среду разработки

3. Настройте конфигурацию/приложение. 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. Использование в коде

// Getting 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 можно использовать в обычном режиме. Метод вставки тот же, но он просто изменяет insertMany в том же каталоге.

!! Правильный способ решить эту проблему из источника, ознакомьтесь с phpinfo и обновите Mongo до последней стабильной версии! Смотрите мою предыдущую статью Установка исходного кода CentOS php 7 или более расширение mongodb, если это Windows, загрузите DLL-файл напрямую.

2.Ошибка аутентификации.

совет1 Проверьте учетную запись с паролем и подключитесь к инструменту, чтобы убедиться, что вы сами неправильно ее настроили.

совет2 Использование собственных методов для тестирования, если собственные методы могут быть подключены, но методы пакетов не могут быть подключены, то рассмотрите проблему пакетов.

//% 40 is the meaning 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, выяснилось, что тестовая среда на самом деле является старой версией./ручной выброс крови

· После общения с операторами, техническим обслуживанием и тестированием, чтобы поддерживать стабильность онлайн-версий и мобильность гибкой разработки, мы решили обеспечить совместимость кода. Снова откройте исходный код пакета и найдите следующие сведения (нажмите на доску: посмотрите на путь, затем он находится в пакете jenssegers) После ознакомления с принципом в файл конфигурации были внесены следующие изменения:

Пока что добавляйте, комментируйте, нажимайте, закрывайте!

Оригинал: “https://developpaper.com/laravel-installs-jenssegers-laravel-mongodb-extensions-and-pits-encountered/”