Zend_Db_Table_Rowset.xml 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <sect1 id="zend.db.table.rowset">
  2. <title>Zend_Db_Table_Rowset</title>
  3. <sect2 id="zend.db.table.rowset.introduction">
  4. <title>Inleiding</title>
  5. <para>
  6. Zend_Db_Table_Rowset is een iterator voor Zend_Db_Table_Row object
  7. verzamelingen. In het algemeen instantieer je geen alleenstaande
  8. Zend_Db_Table_Rowset; maar krijg je een Zend_Db_Table_Rowset terug als
  9. resultaat van een oproep aan Zend_Db_Table::find() of fetchAll(). Je
  10. kan dan door de verzameling Zend_Db_Table_Row objecten lopen en deze
  11. wijzigen indien je dat wenst.
  12. </para>
  13. </sect2>
  14. <sect2 id="zend.db.table.rowset.fetch">
  15. <title>Een Rowset verkrijgen</title>
  16. <para>
  17. Het eerste wat je moet doen is een Zend_Db_Table klasse instantiëren.
  18. </para>
  19. <programlisting role="php"><![CDATA[<?php
  20. // een adapter opzetten
  21. require_once 'Zend/Db.php';
  22. $params = array (
  23. 'host' => '127.0.0.1',
  24. 'username' => 'malory',
  25. 'password' => '******',
  26. 'dbname' => 'camelot'
  27. );
  28. $db = Zend_Db::factory('PDO_MYSQL', $params);
  29. // de standaard adapter zetten voor alle Zend_Db_Table objekten
  30. require_once 'Zend/Db/Table.php';
  31. Zend_Db_Table::setDefaultAdapter($db);
  32. // verbinden met een tabel in de database
  33. class RoundTable extends Zend_Db_Table {}
  34. $table = new RoundTable();
  35. ?>]]>
  36. </programlisting>
  37. <para>
  38. Verkrijg vele records van de database door
  39. Zend_Db_Table::find() met meerdere keys te gebruiken,
  40. of door Zend_Db_Table::fetchAll() te gebruiken; het aldus
  41. bekomen resultaat zal een Zend_Db_Table_Rowset object zijn
  42. dat je toelaat door de individuele Zend_Db_Table_Row
  43. objecten in de recordset te lopen.
  44. </para>
  45. <programlisting role="php"><![CDATA[<?php
  46. // verkrijg meerdere records van de tabel
  47. $rowset = $table->fetchAll();
  48. //
  49. // $rowset is nu een Zend_Db_Table_Rowset object bestaande uit
  50. // één Zend_Db_Table_Row object per record in de resultaten
  51. //
  52. ?>]]>
  53. </programlisting>
  54. </sect2>
  55. <sect2 id="zend.db.table.rowset.iterate">
  56. <title>Door de Rowset lopen</title>
  57. <para>
  58. Zend_Db_Table_Rowset implementeert de SPL Iterator interface,
  59. wat betekent dat je door Zend_Db_Table_Rowset objecten kan lopen
  60. zoals je dat doet met arrays door foreach() te gebruiken. Elke
  61. waarde die je zo verkrijgt zal een Zend_Db_Table_Row object zijn
  62. dat overeenkomt met een record van de tabel. Je kan dan de
  63. eigenschappen ervan afbeelden, wijzigen en terug opslaan.
  64. </para>
  65. <programlisting role="php"><![CDATA[<?php
  66. // verbinden met een tabel in de database
  67. class RoundTable extends Zend_Db_Table {}
  68. $table = new RoundTable();
  69. // meerdere records verkrijgen van de tabel
  70. $rowset = $table->fetchAll();
  71. // ze allemaal afbeelden
  72. foreach ($rowset as $row) {
  73. // $row is een Zend_Db_Table_Row objekt
  74. echo "<p>De lievelingskleur van " . htmlspecialchars($row->nobleTitle) . " "
  75. . htmlspecialchars($row->firstName)
  76. . " is " . htmlspecialchars($row->favoriteColor)
  77. . ".</p>\n";
  78. // update het aantal keer dat we deze rij hebben afgebeeld
  79. // (deze eigenschap mapt naar een kolom in de tabel "times_displayed")
  80. $row->timesDisplayed ++;
  81. // de record opslaan met de nieuwe informatie
  82. $row->save();
  83. }
  84. ?>]]>
  85. </programlisting>
  86. </sect2>
  87. </sect1>
  88. <!--
  89. vim:se ts=4 sw=4 et:
  90. -->