2013-10-04 1 views
0

Im совершенно новый для Doctrine и ZF2, исходящий из C# env. из нескольких дней я работаю над доктриной и zf2. и пытаюсь изучить основные вещи, чтобы я мог построить RESTFull Service API в ближайшие дни. Теперь я пытаюсь получить доктрину, чтобы получить результат All() в json, но не смог этого сделать. МЫС клиент API (Backbone.js) работает нормально, и это результат, но показывая пустые объектыDoctrine2 & zf2: fetchAll() результат для JSON, cont преобразовать результат в массив, а затем в json в ZF2

мой код контроллера идет как этот

public function getList() { 

     $repository = $this->getEntityManager()->getRepository('Application\Entity\Test'); 

     $posts = $repository->findAll(); 

     echo var_dump((array)$posts); 

     header('Access-Control-Allow-Origin:http://api.server.com'); 

    return new JsonModel($posts); 
    } 

результат var_dump

array(2) { 
     [0]=> 
     object(Application\Entity\Test)#339 (2) { 
     ["id":"Application\Entity\Test":private]=> 
     int(2) 
     ["name":"Application\Entity\Test":private]=> 
     string(5) "Kumar" 
     } 
     [1]=> 
     object(Application\Entity\Test)#340 (2) { 
     ["id":"Application\Entity\Test":private]=> 
     int(1) 
     ["name":"Application\Entity\Test":private]=> 
     string(8) "Panindra" 
     } 

    } 

и мой JSONModel из пут есть [{},{}].

Я хочу построить это как RESTFull службы

ответ

5

Вы можете использовать QueryBuilder API и getResult() метод Doctrine\ORM\Query объекта с HYDRATE_ARRAY опцией для достижения этой цели. Пример:

$queryBuilder = $this->getEntityManager()->createQueryBuilder(); 
$queryBuilder->select('t') 
      ->from('Application\Entity\Test', 't'); 

$results = $queryBuilder->getQuery() 
         ->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY); 

return new JsonModel($results); 
0

Все в вашем коде верно и прекрасно работает. JsonModel «пуст», потому что ваши члены класса являются закрытыми. Если вы установите их для публики, вы получите ожидаемый JsonModel.

+2

Вы не должны использовать публичных членов в объектах Doctrine 2 из-за ленивой загрузки –

Смежные вопросы