0

以下は、基本クラスのスニペットです。

$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)

何か不足していますか?

4

1 に答える 1

0

これを試してみてください:

$this->hasColumn('order_total', 'float', null, array(
         'type' => 'float',
         'scale' => 8,
         'fixed' => false,
         'unsigned' => false,
         'primary' => false,
         'notnull' => true,
         'autoincrement' => false,
         ));
于 2012-06-21T08:22:31.277 に答える