Witam od razu mówię jestem laikiem w ZF . Nie mam też pewności czy tytuł mojego postu odzwierciedla w 100% mój problem . A więc zaczynam
mam 2 tabele

Pytania i Odpowiedzi

chcę wyświetlić podstronę tak aby

wyświetlały się wszystkie pytania a pod każdym pytaniem wszystkie odpowiedzi czyli zwyczajna drzewiasta struktura np

-Pytanie 1
- odpowiedź do pytania 1
- odpowiedź do pytania 1 nr 2
-Pytanie 2
- odpowiedź do pytania 2
- odpowiedź do pytania 2 nr 2
- odpowiedź do pytania 2 nr 3
[itd] ...


Tak o to wygląda moja akcja kontrolera
  1. public function showmyaskAction()
  2. {
  3. if($this->getAuth()->hasIdentity())
  4. {
  5. $table = $this->getASk();
  6. $id = (int) $this->getAuth()->getIdentity();
  7. $row = $table->select(array('users_iduser'=> $id),true);
  8. $row->setCurrentPageNumber((int)$this->params()->fromQuery('page', 1));
  9. $row->setItemCountPerPage(10);
  10.  
  11.  
  12.  
  13. return new ViewModel(array('rows'=>$row));
  14. }
  15. else
  16. {
  17. return $this->redirect()->toRoute('apka', array('action' => 'login'));
  18. }
  19.  
  20.  
  21.  
  22. }


Próbowałem mniej więcej w ten sposób aby do modelu dołożyć jeszcze jedno pole które by przchowywało wyniki odpowiedzi czyli abstrakcyjnie w ten sposób
  1. public function showmyaskAction()
  2. {
  3. if($this->getAuth()->hasIdentity())
  4. {
  5. $table = $this->getASk();
  6. $id = (int) $this->getAuth()->getIdentity();
  7. $row = $table->select(array('users_iduser'=> $id),true);
  8. $row->setCurrentPageNumber((int)$this->params()->fromQuery('page', 1));
  9. $row->setItemCountPerPage(10);
  10.  
  11. foreach($row as $r)
  12. {
  13. $wynik = $this->getans()->select(array('idask'=>$r->idask));
  14. $r->odp = $wynik;
  15. }
  16.  
  17. return new ViewModel(array('rows'=>$row));
  18. }
  19. else
  20. {
  21. return $this->redirect()->toRoute('apka', array('action' => 'login'));
  22. }
  23.  
  24.  
  25.  
  26. }


no i dalej po prostu sobie to wyświetlić ,no ale niestety wyskakuje jakiś tam błąd że jednak tak nie można tego zrobić
wyniku z paginacji nie można też użyć jako tablicy
próbowałem też przechowywać wyniki odpowiedzi w tablicy o indexie równym id pytania ale też nie wypaliło itd
wszystkie moje próby poszły na marne

być może jest to jakoś zaimplementowanie w samym ZF jednak nie mogę tego znaleźć . Proszę o pomoc wink.gif


----------------------------------------------------------------
Zamykam temat problem rozwiązałem i chodź nie wiem czy moje rozwiązanie jest najlepszym sposobem to uporałem się z tym bez potrzeby jakiejś specjalnej gimnastyki .

Dla osób które będą miały problem podobny moje rozwiązanie w skrócie wygląda następująco
w ServiceConfig w klasie Module tam gdzie inicjalizuję TableGateway zrobiłem coś takiego
  1.  
  2. 'AskTableGatewey'=> function($sm)
  3. {
  4.  
  5. $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
  6. $resultSetPrototype = new ResultSet();
  7.  
  8. $resultSetPrototype->setArrayObjectPrototype(new AskEntity($sm)); /* dokładnie tutaj wszczepiłem Service Managera
  9.   return new TableGateway2('ask', $dbAdapter, null, $resultSetPrototype);
  10.  
  11.  
  12.   },

wszczepiłem Service Managera do modelu tak bym mógł z niego tam korzystać
następnie
w modelu
  1. <?PHP
  2. namespace Application\Model;
  3.  
  4. class AskEntity
  5. {
  6. public $idask;
  7. public $users_iduser;
  8. public $ask;
  9. public $answer;
  10. public $open;
  11. public $answers;
  12. public $sm;
  13.  
  14. public function __construct($sm)
  15. {
  16. $this->sm = $sm;
  17. }
  18.  
  19. public function exchangeArray($data)
  20. {
  21. $this->idask = (!empty($data['idask'])) ? $data['idask'] : null;
  22. $this->users_iduser = (!empty($data['users_iduser'])) ? $data['users_iduser'] : null;
  23. $this->ask = (!empty($data['ask'])) ? $data['ask'] : null;
  24. $this->answer = (!empty($data['answer'])) ? $data['answer'] : null;
  25. $this->open = (!empty($data['open'])) ? $data['open'] : null;
  26.  
  27. $result = $this->sm->get('AnswerTable')->select(array('ask_idask'=>$this->idask));
  28. $this->answers = (!empty($result)) ? $result : array();
  29. }
  30.  
  31.  
  32.  
  33. }
  34.  
  35.  

w modelu zrobiłem coś takiego
Dalej chyba nie muszę wyjaśniać wink.gif
Tak jak mówię nie wiem czy to rozwiązanie jest najlepsze ale wydaje się dość proste

Zamykam temat