Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF]Skojarzenia tabel
amii
post
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Mam problem, którego nie mogę rozgryźć. Mam 4 table: users, trainings, training_instance oraz training_instance_user. Table są powiązane tak:

Do każdego jednego treningu może należeć wiele jego instancji
- Tabela trainings powiązana relacją 1:n z tabelą training_instance

Każdy użytkownik może brać udział w dowolnej ilości treningów i do każdego treningu może należeć wielu użytkowników
- Tabela trainings powiązana relacją n:m (wiele do wielu) z tabelą users za pomocą tabeli haszującej training_instance_user
- Tabela users powiązana relacją n:m z tabelą trainings za pomocą tabeli haszującej training_instance_user


Potrzebuję wypisać dane z tabel trainings oraz trainings_instance danego użytkownika kiedy jednocześnie spełnione są warunki:
training_instance_user->status =1
training_instance_user->canceled = 0
training_instance->date_start <= NOW()

Na razie robię to tak w kontrolerze przekazuję do widoku rekord z id użytkownika. W widoku z kolei pobieram trainings skojarzone z użytkownikiem, dzięki metodzie getInstance pobieram również skojarzoną training_instance i wyświetlam datę. Pytanie jak i gdzie dorzucić te dodatkowe warunki do zapytania ?
  1. //kontroler
  2. //pobieramy rekord dla zalogowanego usera
  3. $user_model = new Application_Model_DbTable_Users();
  4. $s = $user_model->select()->where('id = ?', $this->view->login->id);
  5. //przekazujemy dane zalogowanego usera do widoku
  6. $this->view->user = $user_model->fetchRow($s);
  7.  
  8. //widok
  9. foreach ($this->user->getCourses() as $kursy) {
  10. $data = $kursy->getInstance()->current()->date_start;
  11. echo "<tr><td>$kursy->title</td><td>$kursy->category</td><td>$data</td></tr>";
  12. }
  13.  
  14.  
  15. //pojedynczy rekord z tabeli users class Application_Model_DbTable_Users_Row extends Zend_Db_Table_Row
  16. //metoda pobiera liste treningów (z tabeli trainings) skojarzonych z danym uzytkownikiem (z tabeli users). Zwracany jest obiekt Zend_Db_Table_Rowset
  17. public function getCourses() {
  18. return $this->findManyToManyRowset(
  19. 'Application_Model_DbTable_Trainings',
  20. 'Application_Model_DbTable_TrainingInstanceUser'
  21. );
  22.  
  23. }
  24.  
  25.  
  26. //pojedynczy rekord z tabeli trainings class Application_Model_DbTable_Trainings_Row extends Zend_Db_Table_Row
  27. //metoda pobiera liste training_instance skojarzonych z danym rekordem trainings na rzecz, kto//pojedynczy rekord z tabeli users class Application_Model_DbTable_Users_Row extends Zend_Db_Table_Rowgo wywoływana jest metoda
  28. public function getInstance() {
  29. return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance');
  30. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 23.08.2025 - 16:22