Доктрина: установить значения модели в виде массива

StackOverflow https://stackoverflow.com/questions/1434256

  •  07-07-2019
  •  | 
  •  

Вопрос

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

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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top