Doctrineモデルクラスにいくつかのプロパティとメソッドを追加して、このクラスのインスタンスが作成されるたびに、プロパティが自動的に一度設定され、関連するゲッターでアクセスできるようにしたいのですが、これらの値はに保存されません。データベースではなく、同じクラスの他のプロパティ(これらはdbに格納されている)から計算されます。
たとえば、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()
ので、値は1回計算され、関数が呼び出されるたびに再計算することなくtotal_amount
、でアクセスできます。$my_model->getTotalAmount()
なにか提案を?