test-active-record.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. include_once('../adodb.inc.php');
  3. include_once('../adodb-active-record.inc.php');
  4. // uncomment the following if you want to test exceptions
  5. if (@$_GET['except']) {
  6. if (PHP_VERSION >= 5) {
  7. include('../adodb-exceptions.inc.php');
  8. echo "<h3>Exceptions included</h3>";
  9. }
  10. }
  11. $db = NewADOConnection('mysql://root@localhost/northwind?persist');
  12. $db->debug=1;
  13. ADOdb_Active_Record::SetDatabaseAdapter($db);
  14. $db->Execute("CREATE TEMPORARY TABLE `persons` (
  15. `id` int(10) unsigned NOT NULL auto_increment,
  16. `name_first` varchar(100) NOT NULL default '',
  17. `name_last` varchar(100) NOT NULL default '',
  18. `favorite_color` varchar(100) NOT NULL default '',
  19. PRIMARY KEY (`id`)
  20. ) ENGINE=MyISAM;
  21. ");
  22. $db->Execute("CREATE TEMPORARY TABLE `children` (
  23. `id` int(10) unsigned NOT NULL auto_increment,
  24. `person_id` int(10) unsigned NOT NULL,
  25. `name_first` varchar(100) NOT NULL default '',
  26. `name_last` varchar(100) NOT NULL default '',
  27. `favorite_pet` varchar(100) NOT NULL default '',
  28. PRIMARY KEY (`id`)
  29. ) ENGINE=MyISAM;
  30. ");
  31. class Person extends ADOdb_Active_Record{ function ret($v) {return $v;} }
  32. $person = new Person();
  33. ADOdb_Active_Record::$_quoteNames = '111';
  34. echo "<p>Output of getAttributeNames: ";
  35. var_dump($person->getAttributeNames());
  36. /**
  37. * Outputs the following:
  38. * array(4) {
  39. * [0]=>
  40. * string(2) "id"
  41. * [1]=>
  42. * string(9) "name_first"
  43. * [2]=>
  44. * string(8) "name_last"
  45. * [3]=>
  46. * string(13) "favorite_color"
  47. * }
  48. */
  49. $person = new Person();
  50. $person->name_first = 'Andi';
  51. $person->name_last = 'Gutmans';
  52. $person->save(); // this save() will fail on INSERT as favorite_color is a must fill...
  53. $person = new Person();
  54. $person->name_first = 'Andi';
  55. $person->name_last = 'Gutmans';
  56. $person->favorite_color = 'blue';
  57. $person->save(); // this save will perform an INSERT successfully
  58. echo "<p>The Insert ID generated:"; print_r($person->id);
  59. $person->favorite_color = 'red';
  60. $person->save(); // this save() will perform an UPDATE
  61. $person = new Person();
  62. $person->name_first = 'John';
  63. $person->name_last = 'Lim';
  64. $person->favorite_color = 'lavender';
  65. $person->save(); // this save will perform an INSERT successfully
  66. // load record where id=2 into a new ADOdb_Active_Record
  67. $person2 = new Person();
  68. $person2->Load('id=2');
  69. $activeArr = $db->GetActiveRecordsClass($class = "Person",$table = "Persons","id=".$db->Param(0),array(2));
  70. $person2 = $activeArr[0];
  71. echo "<p>Name (should be John): ",$person->name_first, " <br> Class (should be Person): ",get_class($person2),"<br>";
  72. $db->Execute("insert into children (person_id,name_first,name_last) values (2,'Jill','Lim')");
  73. $db->Execute("insert into children (person_id,name_first,name_last) values (2,'Joan','Lim')");
  74. $db->Execute("insert into children (person_id,name_first,name_last) values (2,'JAMIE','Lim')");
  75. $newperson2 = new Person();
  76. $person2->HasMany('children','person_id');
  77. $person2->Load('id=2');
  78. $person2->name_last='green';
  79. $c = $person2->children;
  80. $person2->save();
  81. if (is_array($c) && sizeof($c) == 3 && $c[0]->name_first=='Jill' && $c[1]->name_first=='Joan'
  82. && $c[2]->name_first == 'JAMIE') echo "OK Loaded HasMany</br>";
  83. else {
  84. var_dump($c);
  85. echo "error loading hasMany should have 3 array elements Jill Joan Jamie<br>";
  86. }
  87. class Child extends ADOdb_Active_Record{};
  88. $ch = new Child('children',array('id'));
  89. $ch->BelongsTo('person','person_id','id');
  90. $ch->Load('id=1');
  91. if ($ch->name_first !== 'Jill') echo "error in Loading Child<br>";
  92. $p = $ch->person;
  93. if ($p->name_first != 'John') echo "Error loading belongsTo<br>";
  94. else echo "OK loading BelongTo<br>";
  95. $p->hasMany('children','person_id');
  96. $p->LoadRelations('children', " Name_first like 'J%' order by id",1,2);
  97. if (sizeof($p->children) == 2 && $p->children[1]->name_first == 'JAMIE') echo "OK LoadRelations<br>";
  98. else echo "error LoadRelations<br>";
  99. $db->Execute("CREATE TEMPORARY TABLE `persons2` (
  100. `id` int(10) unsigned NOT NULL auto_increment,
  101. `name_first` varchar(100) NOT NULL default '',
  102. `name_last` varchar(100) NOT NULL default '',
  103. `favorite_color` varchar(100) default '',
  104. PRIMARY KEY (`id`)
  105. ) ENGINE=MyISAM;
  106. ");
  107. $p = new adodb_active_record('persons2');
  108. $p->name_first = 'James';
  109. $p->name_last = 'James';
  110. $p->HasMany('children','person_id');
  111. $p->children;
  112. var_dump($p);
  113. $p->Save();