2009-09-16 2 views
3

У меня есть массив значений, которые я хочу обновить.Doctrine: Установить значения модели в виде массива

Doctrine_Access предоставляет функцию setArray, которая почти полностью соответствует мне, за исключением того, что она заботится о значениях, которые не имеют полей в модели. Я хочу, чтобы их игнорировали.

Небольшой пример. Скажем, у нас есть таблица User с именем пользователя поля.

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

Это сработало бы!

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

Это не так. Я хочу, чтобы Доктрина просто игнорировала anotherKey, если нет связанной области. Намерение состоит в том, что я не хочу фильтровать свои массивы, прежде чем обновлять свою модель.

Каков самый чистый и простой способ сделать это?

ответ

1

Doctrine_Record :: fromArray() решает его. К сожалению, он не возвращает объект, так что это бесполезно для метода построения цепочки ...

-1

это полезно

добавить метод находкой для модели:

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(); 
+1

Я думаю, вы неправильно поняли вопрос. Он пытается создать новую запись, создавая экземпляр модели и устанавливая значения из массива. Вы не дали ему никакого отношения к этому. Извините за пропущенный голос, дайте другим понять, что это не полезный ответ. –