Zend_Db_Table_Row.xml 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <sect1 id="zend.db.table.row">
  2. <title>Zend_Db_Table_Row</title>
  3. <sect2 id="zend.db.table.row.introduction">
  4. <title>Inleiding</title>
  5. <para>
  6. Zend_Db_Table_Row is een datarij gateway voor het Zend Framework. In het
  7. algemeen instantieer je Zend_Db_Table_Row niet alleen maar krijg je een
  8. Zend_Db_Table_Row terug als een resultaat van Zend_Db_Table::find() of
  9. Zend_Db_Table::fetchRow(). Eenmaal je een Zend_Db_Table_Row hebt kan je
  10. de recordwaarden wijzigen (voorgesteld als klasse-eigenschappen) en dan de
  11. wijzigingen terug naar de oorspronkelijke tabel sturen via save().
  12. </para>
  13. </sect2>
  14. <sect2 id="zend.db.table.row.fetch">
  15. <title>Een rij ophalen</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. // zet de standaard adapter voor alle Zend_Db_Table objecten
  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 één record van de database door Zend_Db_Table::find()
  39. met één enkele key te gebruiken of door Zend_Db_Table::fetchRow()
  40. te gebruiken. Het verkregen resultaat zal een Zend_Db_Table_Row
  41. zijn waarvan elke eigenschap een "camelCaps" benaming van een
  42. "underscore_naam" kolom van de tabel is.
  43. Bijvoorbeeld, "first_name" in de tabel zal "firstName" worden in
  44. de objecteigenschappen.
  45. </para>
  46. <programlisting role="php"><![CDATA[<?php
  47. // verkrijg een record van de tabel als een Zend_Db_Table_Row object
  48. $row = $table->fetchRow('first_name = "Robin"');
  49. //
  50. // $row is nu een Zend_Db_Table_Row objekt met publieke eigenschappen
  51. // die naar tabelkolommen mappen:
  52. //
  53. // $row->id = '3'
  54. // $row->nobleTitle = 'Sir'
  55. // $row->firstName = 'Robin'
  56. // $row->favoriteColor = 'yellow'
  57. //
  58. ?>]]>
  59. </programlisting>
  60. </sect2>
  61. <sect2 id="zend.db.table.row.modify">
  62. <title>Waarden wijzigen</title>
  63. <para>
  64. Het wijzigen van rijwaarden is heel eenvoudig: werk gewoon met de object
  65. eigenschappen zoals je dat met eender welk ander object zou doen. Als je
  66. klaar bent kan je de rij terugschrijven naar de oorspronkelijke tabel met save().
  67. </para>
  68. <programlisting role="php"><![CDATA[<?php
  69. // verbinden met een tabel in de database
  70. class RoundTable extends Zend_Db_Table {}
  71. $table = new RoundTable();
  72. // verkrijg een record van de tabel als een Zend_Db_Table_Row object
  73. $row = $table->fetchRow('first_name = "Robin"');
  74. //
  75. // $row is nu een Zend_Db_Table_Row object met publieke eigenschappen
  76. // die naar tabelkolommen mappen:
  77. //
  78. // $row->id = '3'
  79. // $row->nobleTitle = 'Sir'
  80. // $row->firstName = 'Robin'
  81. // $row->favoriteColor = 'yellow'
  82. //
  83. // wijzig de leivelingskleur en schrijf de rij terug naar de tabel.
  84. $row->favoriteColor = 'blue';'
  85. $row->save();
  86. ?>]]>
  87. </programlisting>
  88. <para>
  89. Het is evenwel verboden de waarden van primaire keys te wijzigen; indien
  90. je dat toch doet zal Zend_Db_Table_Row een exceptie opwerpen.
  91. </para>
  92. <programlisting role="php"><![CDATA[<?php
  93. // verbinden met een tabel in de database
  94. class RoundTable extends Zend_Db_Table {}
  95. $table = new RoundTable();
  96. // verkrijg een record van de tabel als een Zend_Db_Table_Row object
  97. $row = $table->fetchRow('first_name = "Robin"');
  98. // kunnen we de primaire key "id" wijzigen?
  99. try {
  100. $row->id = 5;
  101. echo "We zouden dit bericht niet moeten zien omdat er een fout werd opgeworpen.";
  102. } catch (Zend_Db_Table_RowException $e) {
  103. echo $e->getMessage();
  104. }
  105. ?>]]>
  106. </programlisting>
  107. </sect2>
  108. </sect1>
  109. <!--
  110. vim:se ts=4 sw=4 et:
  111. -->