私はzf2.1.3とdoctrine2を使っていました。クラスの情報を水和させようとしていましたが、cat_id
のような下線付きのフィールドではDoctrineModule\Stdlib\Hydrator\DoctrineObject
は機能しません。Doctrine 2ハイドレーター - 下線付きフィールド
ここでは例:
/* namespace Application\Entity; */
class Foo
{
private $cat_id;
private $cat_name;
public function getCatId()
{
return $this->cat_id;
}
public function setCatName($name)
{
$this->cat_name = $name;
return $this;
}
public function getCatName()
{
return $this->cat_nome;
}
}
class Bar
{
private $id;
private $name;
public function getId()
{
return $this->id;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->nome;
}
}
/* namespace Application\Controller; */
use \DoctrineModule\Stdlib\Hydrator\DoctrineObject;
public function indexAction()
{
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Foo');
$foo = $hydrator->hydrate(array('cat_name' => 'Frank Moraes'), new Foo());
\Zend\Debug\Debug::dump($foo, 'Foo Hydrator');
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Bar');
$bar = $hydrator->hydrate(array('name' => 'Frank Moraes'), new Bar());
\Zend\Debug\Debug::dump($inscrit, 'Bar Hydrator');
}
このコードは次のように返します。
Foo Hydrator
object(Application\Entity\Foo)
private 'cat_id' => null
private 'cat_name' => null
Bar Hydrator
object(Application\Entity\Foo)
private 'id' => null
private 'name' => 'Frank Moraes'
だから私の質問は:教義ハイドレーターはそれに下線いるフィールドでは動作しないのはなぜ? どうすればこの作品を作れますか?
ありがとうございました!
編集
無応答との長い時間のために申し訳ありません。私の仕事ではSOにアクセスできない!
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Foo', false);
私はここに掲載、このfalse
パラメータが正常に動作しますたとえば:
しかし、フォームにクラスをバインドするときには機能しませんでした。
誰か手掛かりがありますか?この後
に役立ちます。 –
これは、デフォルトのインフレクターがアンダースコアを処理しないためです。あなた自身でそれを微調整するか、https://github.com/doctrine/DoctrineModule/issuesにあるdoctrineモジュールの問題追跡ツールに問題を投稿する必要があります 私は今すぐに私が見る時間がないことを伝えることができますそれは今すぐに。 – Ocramius
私はhttps://github.com/doctrine/DoctrineModule/issues/190に投稿しました – vinigarcia87