2017-01-24 47 views
3

我們使用以下在我們的Web應用程序軟件一樣...新的PHP 1.2.3驅動程序不兼容的laravel的MongoDB 3.4 4.2

  1. Laravel 4.2(PHP框架)
  2. 的MongoDB(3.4)
  3. PHP 5.6版(Ubuntu的LTS 14)

    所以更新版本的MongoDB從2.6到3.4的一些API關閉之後。(座標搜索)

    所以我們發現東東d從mongodb網站升級php驅動程序! (參考鏈接:http://php.net/manual/en/mongodb.installation.php

    在以下文件

    -php.ini(/etc/php5/cli/php.ini) -phpini(在/ etc/PHP5/apache2的製成

    -Necessary變化/php.ini) -mongo.ini(/etc/php5/mods-available/mongo.ini)

    變化是在只有一條線這樣的:延長= mongo.so TO延長= mongodb.so

    但是下面的錯誤仍然存​​在.. [Mon 1月23日16:38:58.714244 2017年] [:錯誤] [pid 5612] [客戶端127.0.0.1:60816] PHP致命錯誤:在/ var/www/projectfolder中帶有消息'類MongoException不存在'的未捕獲異常'ReflectionException' /vendor/laravel/framework/src/Illuminate/Exception/Handler.php:310\nStack trace:\ n#0

    任何人都可以提供幫助嗎?

    在此先感謝

enter image description here

回答

0

請您蒙戈類添加到app.php。就像在我的文件中我已經添加了這樣。

'Jenssegers\Mongodb\MongodbServiceProvider', 

以上是我的應用程序類。你必須添加你的庫類。

第二個原因是,你在代碼中使用db而不是DB嗎?任何地方。 如果你按照上面的步驟,然後在cmd中運行以下命令:

composer update, then composer dump-autoload 

做讓我知道如果您需要任何幫助。我在Laravel 4.2中有同樣的錯誤,我通過這個步驟解決了這個問題。

+0

感謝答案不同RND步驟,但在蒙戈查詢誤RND後。我發現在新版本中,MongoDB 3.4需要在地理座標搜索API調用之前對集合進行索引。因此createIndex是此查詢的最終解決方案 –

1

1]使用創建索引以下MongoQuery

db.user.createIndex({ "location" : "2dsphere" }) 

2]確保索引施加或不使用下面的命令

db.user.ensureIndex({ "location" : "2dsphere" }) 

3]檢查以下蒙戈查詢中的MongoDB控制檯。它的工作

db.user.find(
    {"location" : { 
     "$nearSphere": { 
      "$geometry": { 
       "type": "Point", "coordinates": [72.513723 , 23.041388] 
      }, 
     "$maxDistance": 8000, 
     "$uniqueDocs": 1 
     } 
    } 
}) 

經過兩天的投資,我得到這個解決方案來解決這個bug通過谷歌搜索和perfomred有關MongoDB