我想给一个Doctrine模型类添加一些属性和方法,这样每次创建这个类的实例时,自动设置一次属性,可以用相关的getter访问,但是这些值并没有存储在数据库,而是根据同一类的其他属性(这些属性存储在数据库中)计算得出。
例如,假设我在 schema.yml 中有这个类 MyModel:
MyModel:
actAs:
Timestampable: ~
tableName: my_model
columns:
id: { type: integer(8), primary: true, notnull: true, autoincrement: true }
quantity: { type: decimal(12), scale: 3, notnull: true }
price: { type: decimal(12), scale: 3, notnull: true }
通常我需要知道总量,但我不想将其存储在数据库中:我可以这样做
class MyModel extends BaseMyModel
{
public function getTotalAmount()
{
$this->total_amount = $this->getQuantity() * $this->getPrice();
}
}
然后每次我需要知道总金额时,我就可以打电话给$my_model->getTotalAmount()
.
但是,我想要这样的东西
class MyModel extends BaseMyModel
{
public function setTotalAmount()
{
$this->total_amount = $this->getQuantity() * $this->getPrice();
}
public function getTotalAmount()
{
return $this->total_amount;
}
}
并且在创建 MyModel 类的新实例时,例如
$my_model = Doctrine_Core::getTable("MyModel")->find(1);
我希望该setTotalAmount()
函数自动执行,因此该total_amount
值只计算一次,并且可以使用 来访问,$my_model->getTotalAmount()
而不必在每次调用该函数时重新计算它。
有什么建议吗?