2016-08-25 2 views
0

내 "Module.php는"나는 이제 내가 "exchangeArray($data)"방법과 일치하는 클래스를 작성해야 getServiceConfig()자동 매치 DB 컬럼에서

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

에서이 코드를 여기서 모든 단일 열을 클래스 속성과 일치시켜야합니다. 이 작업은 가능하지만 다음을 수행합니다.

어떻게하면 손으로 직접 작성하지 않고이 코드를 작성할 수 있습니까? 열을 "자동"처리하는 방법이 있습니까? 그래서 Entity에서 열 1 : 1을 처리 할 수 ​​있습니까? 나는 생각한다, 나는 setArrayObjectPrototype 이외의 무엇인가 사용해야한다. 그러나 나는 google 위에서 무엇이라도 아직 발견하지 않았다. 도움말 (일부 링크 등) 감사합니다;)

답변

0

Zf2는 기본 수화 전략을 제공합니다.

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

objectProperty 유형은 객체 속성에 따라 자동으로 수화됩니다. getter/setter 메소드를 사용하는 ClassMethods과 같은 다른 유형도 있습니다.

$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