login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[ZF] db_select

Offline robmoorman - 10/12/2008 12:17 (laatste wijziging 10/12/2008 12:18)
Avatar van robmoormanPHP interesse Ik zet met 2 vragen betreft de db_select van zend.
Ik ben momenteel bezig met een staffpagina voor een clanwebsite. Daarbij heb ik twee databases (teams & players).
Ik haal met mijn staffmodel de teams & spelers op. Echter doe ik dit denk ik op een vrij omslachtige manier. Ik zit namelijk met het probleem dat ik bij mijn databaseoutput van de teams ook de spelers in de gereturnde array wil hebben. Het zijn dus twee selects in een eigenlijk. Om het even duidelijk te maken heb ik mijn code in mijn model hieronder:

  1. /**
  2. * Fetch all the teams
  3. * @param array optional parameters to define which teams should be fetched
  4. * @return array
  5. */
  6. public function getTeams( $params = array() )
  7. {
  8. $select = $this->db->select();
  9. $select->from( $this->_name )
  10. ->order( $this->_name . '.name ASC' );
  11.  
  12. foreach( $params as $param => $value )
  13. {
  14. switch( $param )
  15. {
  16. case 'id':
  17. $select->where( 'id = ?', $value );
  18. break;
  19. case 'values':
  20. //if( is_array( $value ) ) $select->from( $this->_name, $value );
  21. break;
  22. case 'limit':
  23. $select->limit( $value, 0 );
  24. break;
  25. }
  26. }
  27.  
  28. $result = $this->db->fetchAll( $select );
  29. $output = array();
  30.  
  31. foreach( $result as $param => $value )
  32. {
  33. $return = array();
  34. foreach( $value as $param => $content )
  35. {
  36. $return[ $param ] = $content;
  37. }
  38. $return[ 'players' ] = $this->getPlayers( array( 'team_id' => $return[ 'id' ] ) );
  39. $output[] = $return;
  40. }
  41.  
  42. return $output;
  43. }
  44.  
  45. /**
  46. * Fetch all the players
  47. * @param array optional parameters to define which players should be fetched
  48. * @return array
  49. */
  50. public function getPlayers( $params = array() )
  51. {
  52. $select = $this->db->select();
  53. $select->from( $this->_players )
  54. ->order( $this->_players . '.name ASC' );
  55.  
  56. foreach( $params as $param => $value )
  57. {
  58. switch( $param )
  59. {
  60. case 'team_id':
  61. $select->where( 'team_id = ?', $value );
  62. break;
  63. case 'values':
  64. //if( is_array( $value ) ) $select->from( $this->_name, $value );
  65. break;
  66. case 'limit':
  67. $select->limit( $value, 0 );
  68. break;
  69. }
  70. }
  71.  
  72. return $this->db->fetchAll( $select );
  73. }


zoals je ziet lees in de teams output eerst door en voeg ik daar een arrayitem met players aantoen. Dit zou toch sneller moeten ???


Mijn tweedde punt is dat ik ook via mijn $params (array) kan opgeven welke values ik uit mijn tabel wil halen. Echter als ik de regel $select->from( $this->_name ) daarna nog een keer defineer geeft het problemen... weet iemand hier een oplossing voor.


bvd. Rob

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.174s