答MappedSuperclass
:
/** @ORM\MappedSuperclass */
abstract class AbstractMessage
{
/** @ORM\Column(type="text", nullable=true) */
protected $content;
}
还有一个子类,重新定义$content
以添加一些自定义验证断言:
/** @ORM\Entity */
class InternalMessage extends AbstractMessage
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @Assert\NotBlank(message="Internal message title is required.")
*/
protected $content;
/** @return integer */
public function getId() { return $this->id; }
/**
* @param string $content
* @return InternalMessage
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/** @return string */
public function getContent() { return $this->content; }
}
当$content
覆盖父级时
在我的例子中,$content
是不持久的!null
场地...
$content
从孩子身上移除
如果我$content
从InternalMessage
字段中删除是持久的,而验证不再起作用。
这是一个错误还是什么?我打开了一个问题,但不知道它是否是正确的地方(我对 github 的工作方式不熟悉)。
太糟糕了,我意识到 Doctrine 继承是错误的(从生成器本身开始......)。