2

私はPHPでMongo geospatial Queryを試しました.次のエラーに直面しました.2つのPHPスクリプトを書きました..GeoPHPでクラスからオブジェクトを作成し、メンバーメソッドを呼び出しますそして私の別のPHPスクリプトclass.master.phpはクラスとメンバーを書きましたメソッド

GeoPHP.php

<?php
require 'class.master.php';
$lat = 27.53864605; 
$long =  94.57980515; 
$distance = 5;

$geObj = new Geo;

$geObj->DbInst('dbname', 'collectionname');

$geObj->assignGeo($lat, $long, $distance);

$resultFld = array('id', 'name', 'stid', 'dis_id', 'ta_id');

$query = array('location'=>
                    array("\$near"=>
                            array("\$geometry"=>
                                array('type'=>'Point', 'coordinates'=>
                                    array($long, $lat)),"\$minDistance"=> 0, "\$maxDistance"=>$distance
                            )
                    )
        ); 

$result = $geObj->getResult($query, $resultFld);

?>

class.master.php

<?php

require 'vendor/autoload.php';

class Geo{

    private $latitude, $longitude, $distance;
    private $uri = "mongodb://localhost:27017";
    private $databaseName;
    private $db;

    public $collection;

    public function DbInst($dbname, $collName){
        // Mongo Connection Establish
        $con = new MongoDB\Client($this->uri);
        $this->databaseName = $dbname;
        $this->db = $con->selectDatabase($this->databaseName);

        $this->collection = $collName;
    }

    public function assignGeo($lat, $long, $dis){
        $this->latitude = $lat;
        $this->longitude = $long;
        $this->distance = $dis;
    }

    public function getResult($query, &$resFld){

        $cursor = $this->collection->find($query);

        return $cursor; 

    }
}
?>

上記のスクリプトは次のエラーを返します

致命的なエラー: 35 行目の D:\xampp_1.8.3\htdocs\GeoMongo\class.master.php の非オブジェクトに対するメンバー関数 find() の呼び出し

このエラーを修正するには?

4

1 に答える 1

0

コレクションを次のように設定します。

$this->collection = $this->db->selectCollection($collName);
于 2016-12-16T12:49:34.713 に答える