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