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 ?
//kontroler //pobieramy rekord dla zalogowanego usera $user_model = new Application_Model_DbTable_Users(); $s = $user_model->select()->where('id = ?', $this->view->login->id); //przekazujemy dane zalogowanego usera do widoku $this->view->user = $user_model->fetchRow($s); //widok foreach ($this->user->getCourses() as $kursy) { $data = $kursy->getInstance()->current()->date_start; } //pojedynczy rekord z tabeli users class Application_Model_DbTable_Users_Row extends Zend_Db_Table_Row //metoda pobiera liste treningów (z tabeli trainings) skojarzonych z danym uzytkownikiem (z tabeli users). Zwracany jest obiekt Zend_Db_Table_Rowset public function getCourses() { return $this->findManyToManyRowset( 'Application_Model_DbTable_Trainings', 'Application_Model_DbTable_TrainingInstanceUser' ); } //pojedynczy rekord z tabeli trainings class Application_Model_DbTable_Trainings_Row extends Zend_Db_Table_Row //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 public function getInstance() { return $this->findDependentRowset('Application_Model_DbTable_TrainingInstance'); }