質問

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

Doctrine_Accessは、モデルにフィールドを持たない値を扱うことを除いて、ほぼ正確に必要な関数setArrayを提供します。それらを無視したい。

小さな例。ユーザー名フィールドを持つユーザーテーブルがあるとします。

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

それは機能します!

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

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

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

役に立ちましたか?

解決

Doctrine_Record :: fromArray()はそれを解決します。 残念ながら、オブジェクトを返しませんので、メソッドの連鎖には役に立ちません...

他のヒント

これは便利です

モデルに検索メソッドを追加:

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();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top