Доктрина: установить значения модели в виде массива
Вопрос
У меня есть массив значений, которыми я хочу обновить свою модель.
Doctrine_Access предоставляет функцию setArray, которая почти точно мне нужна, за исключением того, что она заботится о значениях, которые не имеют полей в модели. Я хочу, чтобы их игнорировали.
Небольшой пример. Скажем, у нас есть таблица User с полем username.
$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();