0

私の質問は、 Zend_Dbを使用するときに値をNULLに設定する方法とまったく同じです。

しかし、その質問で与えられた解決策は私にはうまくいきません。私のコードは次のようになります。updateOperフロントエンドで更新をクリックすると、Modelクラスが呼び出されます。内部では、最初にすべての空白を削除してから、一部のフィールドが入力されているかどうか、またはデフォルト値またはNULL値に設定するかどうかを確認するupdateOper別の関数を呼び出します。したがって、私はとを使用しています。trimData()empty''new Zend_db_expr('null')new Zend_db_expr('default')

コードは次のとおりです。

private function trimData(&$data ) {

    //Trim whitespace characters from incoming data.
    foreach($data as $key => $val)
    { 
        $data[$key] = trim($val);
        if($data['notes'] == '') {
            error_log("set notes to null/default value");
            $data['notes'] = new Zend_db_expr('DEFAULT');
        }
    }

}

public function updateOper($data, $id)
{
    $result = 0;

    $tData = $this->trimData($data);

    error_log("going to add data as ".print_r($data, true));
    $where = $this->getAdapter()->quoteInto('id = ?', $id);
    $result = $this->update($data, $where);

    return $result;
}

error_logステートメントは次のように出力し$data arrayます。

[id] => 10    
[name] => alpha
[notes] => DEFAULT

その結果、notesテーブル定義で指定されたデフォルト値を選択する代わりに、列の値は「DEFAULT」になります。

私は何が悪いのかを理解しようとしてきましたが、解決策を見つけることができませんでした。よろしくお願いします。

本当にありがとう!

4

1 に答える 1

1

$ data ['notes']は、実際のオブジェクトを保持するの__toString()ではなく、の値に変更されています。Zend_Db_Expr

たぶん、参照は物事を詰まらせています。それ以外の場合は、式の宣言を実際の更新クエリに移動する必要があります。

于 2012-08-17T11:11:43.997 に答える