Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie zapytania dla wyników[ZF2][ZF]
larson7221
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 3.04.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował larson7221 28.09.2013, 12:14:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 02:02