2016-08-25 4 views
0

В моих «module.php» я есть этот код в getServiceConfig()Automatch DB колонны с Zend_Db ResultSet (ZF2)

   'FoobarTableGateway' => function ($sm) { 
       $dbAdapter = $sm->get('dbfoobar'); 
       $resultSetPrototype = new ResultSet(); 
       $resultSetPrototype->setArrayObjectPrototype(new Foobar()); 
       return new TableGateway('foobartable', $dbAdapter, null, $resultSetPrototype); 
      }, 

Теперь я должен написать соответствующий класс с помощью метода «exchangeArray($data)» в , где мне нужно сопоставить каждый столбец с классом. Это будет работать, но:

Как написать это без необходимости писать подбор вручную? Есть ли способ «разметки» столбца, поэтому я могу обрабатывать столбец 1: 1 в моей Entity? Я думаю, я должен использовать что-то другое, кроме setArrayObjectPrototype, но я еще ничего не нашел в Google. Любая помощь (некоторые ссылки или около того) сделают, спасибо;)

ответ

0

Zf2 предоставляет стратегии гидратации по умолчанию.

$resultSetPrototype = new Zend\Db\ResultSet\HydratingResultSet(); 
$resultSetPrototype->setHydrator(new Zend\Stdlib\Hydrator\ObjectProperty()); 
$resultSetPrototype->setObjectPrototype(new Foobar()); 

Тип objectProperty автоматически гидратируется на основе атрибута объекта. У вас также есть другой тип, такой как ClassMethods, который будет использовать ваши методы getter/setter.

$resultSetPrototype = new Zend\Db\ResultSet\HydratingResultSet(); 
$resultSetPrototype->setHydrator(new Zend\Stdlib\Hydrator\ClassMethods()); 
$resultSetPrototype->setObjectPrototype(new Foobar()); 

Вы также можете определить свой собственный увлажняющее в вашем resultsetprototype автоматически назначить данные для вашей модели. Но для этого решения вам потребуется написать точную строку кода, которую вы не хотите.

+0

В основном, я просто хочу избавиться от класса Foobar – Paladin

+0

Это ваш класс модели, вы не должны избавляться от него. – Unex

+0

Мои модели под названием «FoobarTable», я просто хочу знать, как избавиться от сущности «Foobar» (в некоторых случаях я просто не нуждаюсь в ней). – Paladin