我正在使用 Zend Framework 2 和 Doctrine 2 开发一个项目。
我有以下维护数据库的过程:
- 我为我的实体编写 XML 映射文件
- 我使用命令“orm:generate-entities”生成实体
- 我使用命令“orm:schema-tool:update --force”生成数据库
我想用自定义业务代码丰富生成的实体:我可以简单地编辑生成的实体,但这意味着在每次新实体生成时都会丢失我的自定义代码,我正在寻找更好的工作流程。
基本上,这是我希望能够做到的:
生成的实体:
namespace My\Base\Entity;
class Cart
{
private $quantity;
public function setQuantity($quantity)
{
$this->quantity = $quantity;
return $this;
}
public function getQuantity()
{
return $this->quantity;
}
}
丰富的实体:
namespace My\Entity;
class Cart extends \My\Base\Entity\Cart
{
public function setQuantity($quantity)
{
$quantity = filter_var(
$quantity,
\FILTER_VALIDATE_INT, array('min_range' => 1)
);
if ($quantity === false) {
throw new \InvalidArgumentException(
'Quantity should be an integer higher than 0'
);
} else {
return parent::setQuantity($quantity);
}
}
}
这不起作用,因为 Doctrine 期望 \My\Entity\Cart 本身是一个实体(而它只是基本实体的扩展)。
有没有办法实现类似的东西?