login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF] Inner Join (Opgelost)

Offline DMM - 01/05/2008 15:20 (laatste wijziging 01/05/2008 15:21)
Avatar van DMMPHP beginner Beste

Op mijn website - die gemaakt wordt a.d.h. van het Zend Framework - wil ik de meest recente reacties van mijn leden weergeven op een nieuwsitem. Bvb:
Citaat:
Laatste reacties
- Door Eric op Nieuwe start
- Door Chris op Update doorgevoerd


De informatie die ik wil weergeven staat in twee tabellen. Ik denk dat ik dit het best met een Inner Join kan doen.
In SQL ziet dat er zo uit:
  1. $query = mysql_query("SELECT
  2. reacties.reactieid,
  3. reacties.nieuwsid,
  4. reacties.naam,
  5. blog.nieuwsid,
  6. blog.titel
  7. FROM reacties
  8. INNER JOIN blog
  9. ON reacties.nieuwsid = blog.nieuwsid");


Zelf m.b.v. de handleiding van het Zend Framework lukt het me niet.

Kan iemand mij helpen?

Alvast bedankt

Met vriendelijke groet
David Roelandt

6 antwoorden

Gesponsorde links
Offline Stijn - 01/05/2008 15:41
Avatar van Stijn PHP expert Als je gebruikt maakt van models (MVC patroon) dan kan je in je model class een relationship array maken tussen andere models. Hier vind je de documentatie.
Offline DMM - 01/05/2008 19:59
Avatar van DMM PHP beginner Hmm, eerlijk gezegd lijkt het me nogal moeilijk. Ik ben zeker en vast van plan om het verder te onderzoeken, maar is er ook een simpelere manier om dit op te lossen?
Offline Ibrahim - 01/05/2008 20:34
Avatar van Ibrahim PHP expert Krijg je soms een error ?
Offline DMM - 01/05/2008 20:43
Avatar van DMM PHP beginner Met mijn query, bedoel je? Heb ik niet geprobeerd omdat ik weet dat hij toch fout is. Hij moet nog omgezet worden in een "specifieke ZF query", om het zo te formuleren.

Op een bepaade site had ik gezien dat het zo kon, maar ik krijg telkens een foutmelding.
  1. $db = Zend_Db_Table::getDefaultAdapter();
  2.  
  3. $roles = $db->fetchAll("SELECT
  4. reacties.reactieid
  5. reacties.nieuwsid
  6. reacties.naam
  7. blog.nieuwsid
  8. blog.titel
  9. FROM reacties
  10. INNER JOIN blog
  11. ON reacties.nieuwsid = blog.nieuwsid");

Dit is de foutmelding:
Citaat:
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in C:xampphtdocszf_damamalibraryZendControllerDispatcherStandard.php:249 Stack trace: #0 C:xampphtdocszf_damamalibraryZendControllerFront.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:xampphtdocszf_damamaindex.php(55): Zend_Controller_Front->dispatch() #2 {main} thrown in C:xampphtdocszf_damamalibraryZendControllerDispatcherStandard.php on line 249


Hoe het ik dan verder in de view moet ophalen, weet ik nog minder.
Offline Stijn - 02/05/2008 01:46
Avatar van Stijn PHP expert
  1. try{
  2. //je code van hierboven
  3. }catch( Exception $e )
  4. {
  5. die( $e->getMessage() );
  6. }
Dan krijg je te zien wat er mis is in je query.
Offline DMM - 02/05/2008 12:36 (laatste wijziging 02/05/2008 12:41)
Avatar van DMM PHP beginner Deze query werkt nu, aangezien ik geen foutmelding krijg.
  1. $roles = $db->fetchAll("SELECT
  2. reacties.reactieid,
  3. reacties.nieuwsid,
  4. reacties.naam,
  5. blog.nieuwsid,
  6. blog.titel
  7. FROM reacties
  8. INNER JOIN blog
  9. ON reacties.nieuwsid = blog.nieuwsid");


Hoe moet ik hem echter ophalen in mijn view? Ik probeerde het zo:
  1. <?php foreach($roles as $row): ?>

Maar dan kreeg ik een foutmelding (Warning: Invalid argument supplied for foreach()).

Edit Het is me gelukt. Bedankt voor de hulp

In mijn controller moet ik deze code gebruiken:
  1. $this->view->roles = $db->fetchAll("SELECT
  2. reacties.reactieid,
  3. reacties.nieuwsid,
  4. reacties.naam,
  5. blog.nieuwsid,
  6. blog.titel
  7. FROM reacties
  8. INNER JOIN blog
  9. ON reacties.nieuwsid = blog.nieuwsid");

In mijn view deze:
  1. <?php foreach($this->roles as $row): ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.523s