Doctrine:将模型值设置为数组

时间:2009-09-16 17:05:30

标签: php orm doctrine

我有一系列我希望用。更新模型的值。

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。 目的是,我不想在更新模型之前过滤我的数组。

完成这项工作的最简洁,最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

Doctrine_Record :: fromArray()解决了这个问题。 不幸的是它没有返回对象,所以它对方法链没有用......

答案 1 :(得分:-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();