как исправить недопустимый объектный идентификатор Монго Исключение

У меня есть этот код

public function deactivateDuplicateDevices(Document\Device $oDevice, Document\Passenger $oPassenger)
{
$passengerId = new \MongoId(oPassenger->getId());
$deviceId = new \MongoId($oDevice->getId());

return $this->createQueryBuilder('Device')
->update()
->multiple(true)
->field('activated')->set(false)
->field('passenger')->unsetField()->equals($passengerId)
->field('_id')->notEqual($deviceId)
->getQuery()
->execute();
}

который отлично работает на моем сервере, но не работает на моей локальной машине.

Бег pecl list на dev возвращается

APC     3.1.13  beta
amqp    1.2.0   stable
intl    3.0.0   stable
mongo   1.3.7   stable

и по местным доходам:

mongo   1.5.6   stable
xdebug  2.2.5   stable

сообщение о сбое на моей машине

"name":"MongoException","message":"Invalid object ID"},"code":500}

Я пытался понизить версию своей локальной версии mongo, но не смог понять это с помощью плохой документации pecl. например я попробовал это:

sudo pecl upgrade -f -c channel://pecl.php.net/mongo-1.3.7

но я продолжаю получать channel does not exist для всех моих перестановок канала.

также работает mongod --version локально возвращается дБ версия v2.6.0 и на Dev возвращается дБ версия v2.4.3

это полная трассировка стека

{"response":{"file":"\/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Mapping\/Types\/IdType.php","line":37,"trace":"#0 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Mapping\/Types\/IdType.php(37): MongoId->__construct(1)\n#1 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Mapping\/ClassMetadataInfo.php(1291): Doctrine\\ODM\\MongoDB\\Mapping\\Types\\IdType->convertToDatabaseValue(1)\n#2 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Persisters\/DocumentPersister.php(990): Doctrine\\ODM\\MongoDB\\Mapping\\ClassMetadataInfo->getDatabaseIdentifierValue(1)\n#3 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Persisters\/DocumentPersister.php(861): Doctrine\\ODM\\MongoDB\\Persisters\\DocumentPersister->prepareQueryElement('passenger', 1, NULL, true)\n#4 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Persisters\/DocumentPersister.php(836): Doctrine\\ODM\\MongoDB\\Persisters\\DocumentPersister->prepareSubQuery(Array)\n#5 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Query\/Expr.php(129): Doctrine\\ODM\\MongoDB\\Persisters\\DocumentPersister->prepareNewObj(Array)\n#6 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/doctrine\/mongodb-odm\/lib\/Doctrine\/ODM\/MongoDB\/Query\/Builder.php(239): Doctrine\\ODM\\MongoDB\\Query\\Expr->getNewObj()\n#7 \/Users\/abdullah\/dev\/php\/smartTaxi\/src\/St\/AppBundle\/Repository\/DeviceRepository.php(132): Doctrine\\ODM\\MongoDB\\Query\\Builder->getQuery()\n#8 \/Users\/abdullah\/dev\/php\/smartTaxi\/src\/St\/AppBundle\/Model\/PassengerManager.php(207): St\\AppBundle\\Repository\\DeviceRepository->deactivateDuplicateDevices(Object(St\\AppBundle\\Document\\Device), Object(MongoDBODMProxies\\__CG__\\St\\AppBundle\\Document\\Passenger))\n#9 \/Users\/abdullah\/dev\/php\/smartTaxi\/src\/St\/ApiBundle\/Controller\/PassengerController.php(96): St\\AppBundle\\Model\\PassengerManager->register(Object(St\\AppBundle\\Document\\Device), '6651')\n#10 [internal function]: St\\ApiBundle\\Controller\\PassengerController->verifyRegistrationAction()\n#11 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/jms\/cg\/src\/CG\/Proxy\/MethodInvocation.php(63): ReflectionMethod->invokeArgs(Object(EnhancedProxy_5e2a7e5669a027f8d79b4b96c7288b294d024637\\__CG__\\St\\ApiBundle\\Controller\\PassengerController), Array)\n#12 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/jms\/security-extra-bundle\/JMS\/SecurityExtraBundle\/Security\/Authorization\/Interception\/MethodSecurityInterceptor.php(120): CG\\Proxy\\MethodInvocation->proceed()\n#13 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/jms\/cg\/src\/CG\/Proxy\/MethodInvocation.php(58): JMS\\SecurityExtraBundle\\Security\\Authorization\\Interception\\MethodSecurityInterceptor->intercept(Object(CG\\Proxy\\MethodInvocation))\n#14 \/Users\/abdullah\/dev\/php\/smartTaxi\/app\/cache\/dev\/jms_diextra\/proxies\/St-ApiBundle-Controller-PassengerController.php(21): CG\\Proxy\\MethodInvocation->proceed()\n#15 [internal function]: EnhancedProxy_5e2a7e5669a027f8d79b4b96c7288b294d024637\\__CG__\\St\\ApiBundle\\Controller\\PassengerController->verifyRegistrationAction()\n#16 \/Users\/abdullah\/dev\/php\/smartTaxi\/app\/bootstrap.php.cache(1426): call_user_func_array(Array, Array)\n#17 \/Users\/abdullah\/dev\/php\/smartTaxi\/app\/bootstrap.php.cache(1390): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#18 \/Users\/abdullah\/dev\/php\/smartTaxi\/app\/bootstrap.php.cache(1566): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#19 \/Users\/abdullah\/dev\/php\/smartTaxi\/app\/bootstrap.php.cache(617): Symfony\\Bundle\\FrameworkBundle\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#20 \/Users\/abdullah\/dev\/php\/smartTaxi\/web\/app_dev.php(31): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#21 \/Users\/abdullah\/dev\/php\/smartTaxi\/vendor\/symfony\/symfony\/src\/Symfony\/Bundle\/FrameworkBundle\/Resources\/config\/router.php(30): require('\/Users\/abdullah...')\n#22 {main}","name":"MongoException","message":"Invalid object ID"},"code":500}

в PHP шторм, если я выделю тип Mongoid, он показывает мне это

введите описание изображения здесь

идеи?

1

Решение

так что в основном то, как я это сделал, было просто перейти на страницу пакета Монго на сайте pecl Вот.. Я загрузил Монго-1.3.7.tgz. затем я просто запустил эту команду (после удаления оригинальной версии 1.5.6 using pecl uninstall mongo):

pecl install mongo-1.3.7.tgz

и это было все! Очевидно, что это проблема конкретной версии .. команда, которая устарела или что-то в этом роде ..

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]