На вашем месте я бы присмотрелся к Hydrators:
Документы ZF2 по гидраторам
Создайте новый класс, реализующий HydratorInterface:
namespace Zend\Stdlib\Hydrator;
interface HydratorInterface
{
/**
* Extract values from an object
*
* @param object $object
* @return array
*/
public function extract($object);
/**
* Hydrate $object with the provided $data.
*
* @param array $data
* @param object $object
* @return void
*/
public function hydrate(array $data, $object);
}
Вам нужно реализовать 2 функции:
extract($object);
Extract создаст массив из объекта.
hydrate(array $data, $object);
Hydrate создаст объект из массива.
Когда вы делаете выбор, вы можете иметь все поля в 1 массиве, поэтому у вас нет проблем с помещением его в объект. При извлечении вы хотите разделить его. Вы можете реализовать извлечение таким образом:
public function extract($object)
{
return array(
'tbl1' => array(
'fld1' => $object->getFld1(),
'fld2' => $object->getFld2(),
'fld3' => $object->getFld3(),
),
'tbl2' => array(
'fld4' => $object->getFld4(),
'fld5' => $object->getFld5(),
),
'tbl3' => array(
'fld6' => $object->getFld6(),
'fld7' => $object->getFld7(),
'fld8' => $object->getFld8(),
'fld9' => $object->getFld9(),
),
);
}
Когда вы затем извлекаете данные, вы можете передать каждую группу данных в правильную таблицу для вставки или обновления.
person
Jeroen
schedule
21.10.2013