3

モデルを更新したい値の配列があります。

Doctrine_Accessは、モデルにフィールドを持たない値を考慮していることを除いて、私が必要としているものとほぼ同じ関数setArrayを提供します。それらを無視してほしい。

ちょっとした例。フィールドusernameを持つUserテーブルがあるとします。

$user = new User();
$user->setArray(array('username'=>'xyz'))->save();

それはうまくいくでしょう!

$user = new User();
$user->setArray(array('username'=>'xyz','anotherKey'=>'anotherValue'))->save();

そうではありません。関連するフィールドがない場合、DoctrineにanotherKeyを無視させたい。モデルを更新する前に配列をフィルタリングしたくないという意図があります。

これを行うための最もクリーンで簡単な方法は何ですか?

4

2 に答える 2

1

Doctrine_Record::fromArray() が解決します。残念ながら、オブジェクトを返さないため、メソッドチェーンには役に立ちません...

于 2009-09-16T21:30:54.340 に答える
-1

これは便利です

モデルに find メソッドを追加します。

class Address extends Doctrine_Record {

    public static function factory() {
        return new Address();
    }

public function findById($id) {
       $findObject = Doctrine::getTable('Address')->findOneByid($id);
       return $findObject;
     }
....

そしてそれを使う

  $address = Address::factory()
        ->findById(13)->set('name', 'new data')->set('anotherfield','another data')->save();
于 2010-12-24T18:27:53.227 に答える