我使用zf2.1.3和doctrine 2.我試圖在我的課程上提供信息,並意識到DoctrineModule\Stdlib\Hydrator\DoctrineObject
不適用於帶有下劃線的字段,如cat_id
。Doctrine 2 Hydrator - 帶下劃線的字段
下面的例子:
/* 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'
所以我的問題是:爲什麼主義保溼不與在它強調的領域工作? 我該如何做這項工作?
謝謝!
編輯
很抱歉的很長一段時間沒有答案。在我的工作中,沒有人可以訪問!
我試過如下:
$hydrator = new DoctrineObject($this->getEntityManager(), 'Application\Entity\Foo', false);
對於我貼在這裏,這false
參數正常工作的例子。
但是,當我綁定表單上的類時,它不起作用!
有人有線索嗎?
我會發布此問題上的原則谷歌的用戶羣。 – 2013-03-11 01:31:45
這是因爲默認的inflector不處理下劃線。您需要自行調整它或在https://github.com/doctrine/DoctrineModule/issues上發佈關於Doctrine模塊問題跟蹤器的問題 我現在可以告訴您,我沒有時間查看雖然現在進入它。 – Ocramius 2013-03-11 03:05:22
我在https://github.com/doctrine/DoctrineModule/issues/190上發佈了這個問題 – vinigarcia87 2013-03-13 01:14:21