以下は、基本クラスのスニペットです。
$this->hasColumn('order_total', 'float', null, array(
'type' => 'float',
'fixed' => false,
'unsigned' => false,
'primary' => false,
'notnull' => true,
'autoincrement' => false,
));
そして、ここに私の使用法があります:
public function preInsert($event)
{
echo $total = $this->_totalWithTax;
$this->order_total = $total;
$this->created_at = Zend_Date::now()->toString('yyyy-MM-dd HH:mm:ss');
}
何らかの理由で$total
、整数の場合にのみ機能しますが、値が浮動小数点の場合は機能しません (ちなみに、これは最も一般的なシナリオです)。これを型キャストでテストしました。
なぜそうなのかを理解しようとする無駄な試みで、私は髪の毛を引き裂くところまで来ています。
また、使用$this->_set('order_total', $total);
しても機能しません。
編集:クラス内にゲッターオーバーライドがあることを忘れていました:
public function getOrderTotal()
{
return $this->_totalWithTax;
}
それが大きな違いを生む場合に備えて。
メソッドを呼び出すと、次のsave
エラーが発生します。
Validation failed in class LP_Orders 1 field had validation error: * 1 validator failed on order_total (notnull)
何か不足していますか?