2016-04-28 9 views
1

へのMongoDB BSONを変換するために、どのように私はあなたたちはこれで私を助けることを願って:が正しくPHPオブジェクト

まず物事を最初に - 私は、次のバージョン/ライブラリを使用しています:

私がしようとしているトンo BSON配列を変換して、私のプロジェクトで作業するためにデータベースから抜け出す。

私はMongoDBの大きな機会の1つが、1つのコレクションに異なる編成されたデータを持つことを理解していました。この例では と同様に(1つのオブジェクトのみが "説明" タグを持っています

JSONドキュメント:

{ 
    enumbers ":[ { 
     "id": "84", 
     "enumber": "E 472 b", 
     "name": "Milchs\u00e4ureester von Mono- und Diglyceriden von Speisefetts\u00e4uren" 
    }, { 
     "id": "198", 
     "enumber": "E 407", 
     "name": "Carrageen", 
     "description": "Testdescription", 
    }, { 
     "id": "293", 
     "enumber": "E 941", 
     "name": "Stickstoff" 
    }] 
} 

私は次のコードでデータベースにアクセスしています:

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017"); 
$collection = new MongoDB\Collection($manager, "test", "items"); 
$document = $collection->findOne(["id" => '5']); 
$product= new Product($document); 

作品罰金をここまで。

use MongoDB\Model\BSONArray; 
use MongoDB\Model\BSONDocument; 
class Product 
public function __construct(BSONDocument $data) 
{ 


    foreach ($data as $part){ 
     try{ 
     $this->setId($part->id); 
     $this->setEnumber($part->id); 
     $this->setName($part->name); 
     -------------------------------------- 
     $this->setDescription($part->description); 
     -------------------------------------- 
     }catch (\Exception $e){ 
      echo $e; 
     } 

    } 

    echo "-------------------------------------------------".PHP_EOL; 

} 

"$ this-> setDescription($ part-> description); "例外"をスローする:

ここで、 "description"タグは定義されていません。

実際、私はそれが存在しない場合はnullを返すことを望んでいました。

データセットの一部にこのタグが付いているかどうかわかりますか?

は、あなたが私に私が私が私の機能で「深すぎる」​​一つの層にアクセスしようとしたことが分かった:)

答えて

0

を読み取るための&感謝を助けることができると思います。 私は

$this->setDescription($data->description); 

にアクセスしようとしたとき、それが設定された場合、私がチェックすることができ:

if (isset($data->name)) $this->setName($data->name); 

作品を。

私はすでに結果が出ていないと思っていましたが、正式な論文の作成はこれを誇張してしまうと思います。