是否有可能覆盖doctrine2 persistentobject魔术getter和设置

时间:2012-01-27 21:46:27

标签: zend-framework doctrine-orm

有人可以告诉我它是否可以覆盖doctrine2 persistentobject magic getters \ setters?我想做以下事情: -

public function setDob($dob)
{
    $this->dob= new \Date($date);
}

但是我的实体被定义为: -

使用Doctrine \ Common \ Persistence \ PersistentObject;    使用Doctrine \ ORM \ Mapping作为ORM;

/**
* User
* 
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="Ajfit\Repository\User")
* @ORM\HasLifecycleCallbacks
*/
class User extends \Doctrine\Common\Persistence\PersistentObject
{
   /**
    * @var date $dob
    *
    * @ORM\Column(name="dob", type="date")
    */
   protected $dob;
}

使用以下命令创建实体时,不会调用公共函数setDob: -

public function getNewRecord() {
     return $this->metadata->newInstance();
 }

我收到以下错误: -

Notice:- array to string conversion ...Doctrine\DBAL\Statement.php on line 98

任何帮助都会受到很大的帮助。

由于

安德鲁

1 个答案:

答案 0 :(得分:1)

如果您定义了setDob方法,则不会调用PersistentObject#__call的{p> __call。 你在做什么是通过元数据创建一个新实例。你在做什么可能假设ORM应该调用__construct或任何setter / getter。 Doctrine避免在通过元数据/水合作用生成对象时调用对象上的任何方法(检查ClassMetadataInfo#newInstance以查看它是如何完成的),因为它只知道它的字段。 这使您可以完全独立于Doctrine的逻辑。 关于通知,这是来自Doctrine\DBAL\Statement的完全不同的问题,这表明我在查询中可能有一些错误的参数绑定。这应该单独处理。