彼はみんな、
symfony2を使用してmongodbドキュメントを簡単に参照したいと思います。
この2つのドキュメントがあり、画像参照をリクエストドキュメントに保存したいと思います。リクエストドキュメントに画像IDしかない場合は、うまくいきます。
だから私は以下が必要です:
誰もがドキュメントファイルを変更し、custum呼び出しを行って拡張し、リクエスト(画像配列)からすべての画像をオブジェクトとして取得できますか?
私の元のファイル:
ドキュメントの写真:
<?php
namespace TestBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(repositoryClass="TestBundle\Repository\RequestsRepository")
*/
class Requests
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $title;
public function setId($id)
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
public function setTitle($title)
{
$this->title = $title;
}
public function getTitle()
{
return $this->title;
}
}
ドキュメントの写真:
<?php
namespace TestBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(repositoryClass="TestBundle\Repository\PicturesRepository")
*/
class Pictures
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $filename;
public function setId($id)
{
$this->id = $id;
}
public function getId()
{
return $this->id;
}
public function setFilename($filename)
{
$this->filename = $filename;
}
public function getTitle()
{
return $this->filename;
}
}
私の基本的な呼び出し:
$dm = $this->get('doctrine.odm.mongodb.document_manager');
$request = $dm->getRepository('TestBundle:Requests')->find($requestId);
私のテストへ:
私はリクエストドキュメントに次のように追加しました:
/**
* @MongoDB\ReferenceMany(targetDocument="Pictures",cascade={"persist"},simple="true")
*/
protected $pictures = array();
public function setPictures($pictures)
{
$this->pictures[] = $pictures;
}
public function getPictures()
{
return $this->pictures;
}
そしてこのような写真を追加しました:
$dm = $this->get('doctrine.odm.mongodb.document_manager');
$photo = $dm->getRepository('TestBundle:Pictures')->find($photoId);
$dm1 = $this->get('doctrine.odm.mongodb.document_manager');
$request = $dm1->getRepository('TestBundle:Requests')->find($requestId);
$request->setPictures($photo);
$dm1->flush();
これは機能しますが、ドキュメントを読み込んでも写真を取得できません。
ロードするコード:
$dm1 = $this->get('doctrine.odm.mongodb.document_manager');
$request = $dm1->getRepository('TestBundle:Requests')->find($requestId);
$pictures = $request->getPictures();
foreach($pictures as $picture)
{
print $picture->getId();
}
これは機能しません。私は次のエラーになります:
致命的なエラー:Doctrine \ ODM \ MongoDB \ Proxy \ ProxyFactory :: getProxy():開くのに失敗しました'... / app / cache / dev / doctrine / odm / mongodb / Proxys / _ CG _TestBundleDocumentPictures.php'(include_path = ' 。:... / library:/usr/local/zend/share/pear')in .... / test / vendor / doctrine-mongodb-odm / lib / Doctrine / ODM / MongoDB / Proxy / ProxyFactory.php on .... 100行目
ありがとう、ジャン