Login   Register  
PHP Classes
elePHPant
Icontem

File: example.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Jake Grimley  >  My Active Record  >  example.php  >  Download  
File: example.php
Role: Example script
Content type: text/plain
Description: example script featuring various methods
Class: My Active Record
Map objects to MySQL database table rows
Author: By
Last change: changed to include v 0.4 not v 0.3
Date: 2006-11-18 10:43
Size: 4,187 bytes
 

Contents

Class file image Download
<?php

/*

This PHP file illustrates many of the features of MyActiveRecord.
Create a blank database on your database server, and alter the database
connection string below, in order to try it out.

This script will create the necessary database tables the first time it is
run.

*/

// Connection string (change this)
define('MYACTIVERECORD_CONNECTION_STR''mysql://user:pass@localhost/myartest');

// Include MyActiveRecord
include 'MyActiveRecord.0.4.php';

// Create the database tables
$car_sql "
CREATE TABLE `car`
(
  `id` int(11) NOT NULL auto_increment,
  `make` varchar(50) NOT NULL default '',
  `model` varchar(50) NOT NULL default '',
  `colour` varchar(50) default NULL,
  `driver_id` int(11) default NULL,
  PRIMARY KEY  (`id`)
)
"
;

$driver_sql "
CREATE TABLE `driver`
(
  `id` int(11) NOT NULL auto_increment,
  `first` varchar(50) default NULL,
  `last` varchar(50) default NULL,
  `class` varchar(50) default NULL,
  PRIMARY KEY  (`id`)
)
"
;

$car_driver_sql "
CREATE TABLE `car_driver`
(
  `car_id` int(11) default NULL,
  `driver_id` int(11) default NULL,
  KEY `car_id` (`car_id`),
  KEY `driver_id` (`driver_id`)
)
"
;

// create Car Table
if( !MyActiveRecord::TableExists('car') ) 
{
    
MyActiveRecord::Query($car_sql);
    print 
"Created `car` Table\n";
}

// create Driver Table
if( !MyActiveRecord::TableExists('driver') )
{
    
MyActiveRecord::Query($driver_sql);
    print 
"Created `driver` Table\n";
}

// create Car_Driver Table
if( !MyActiveRecord::TableExists('car_driver') )
{
    
MyActiveRecord::Query($car_driver_sql);
    print 
"Created `car_driver` Table\n";
}

// Create mapping classes
class Car extends MyActiveRecord 
{
    function 
destroy()
    {
        
// clean up attached People (drivers) on destroy
        
foreach( $this->find_attached('Driver') as $driver $this->detach($driver);
        return 
parent::destroy();
    }    
}

class 
Driver extends MyActiveRecord
{
    function 
destroy()
    {
        
// clean up attached (driven) cars on destroy
        
foreach( $this->find_attached('Car') as $car $this->detach($car);
        return 
parent::destroy();
    }
}

// Single Table Inheritance
class FemaleDriver extends Driver {}
class 
MaleDriver extends Driver {}

// Delete any existing data from tables
foreach( MyActiveRecord::FindAll('Car') as $car $car->destroy();
foreach( 
MyActiveRecord::FindAll('Driver') as $driver $driver->destroy();

// Create cars
$ka MyActiveRecord::Create('Car', array('make'=>'Ford''model'=>'Ka'colour=>'Silver') );
$ka->save();

$c4 MyActiveRecord::Create('Car', array('make'=>'Citroen''model'=>'C4'colour=>'Silver') );
$c4->save();

// Create drivers
$jake MyActiveRecord::Create('MaleDriver', array('first'=>'Jake''last'=>'Grimley') );
$jake->save();

$jana MyActiveRecord::Create('FemaleDriver', array('first'=>'Jana''last'=>'Grimley') );
$jana->save();

// One-to-many relationships
$ka->driver_id $jana->id;    // Jana owns the Ford Ka
$ka->save();

$c4->driver_id $jake->id// Jake owns the Citroen C4
$c4->save();

// Many-to-many relationships
// Jake is allowed to drive the C4 and the Ka
MyActiveRecord::link($c4$jake);
$ka->attach($jake);

// Jana is allowed to drive the C4 and the Ka
$jana->set_attached('Car', array($c4->id$ka->id));

// Display cars and drivers with relationships
print "Drivers:\n";
foreach( 
MyActiveRecord::FindAll('Driver') as $driver )
{
    
$driver->owns $driver->find_children('Car');
    
$driver->drives  $driver->find_attached('Car');
    
print_r($driver);
}
print 
"Cars:\n";
foreach( 
MyActiveRecord::FindAll('Car') as $car )
{
    
$car->owner $car->find_parent('Driver');
    
$car->drivers $car->find_attached('Driver');
    
print_r($car);
}
// show car colours
foreach( MyActiveRecord::FreqDist('Car''colour') as $colour=>$total )
{
    print 
"There are $total $colour coloured cars\n";
}
$ka->validate_uniqueness_of('colour')
    or print 
"The Colour of the Ford Ka is not unique\n";

// Clean up data
foreach( MyActiveRecord::FindAll('Car') as $car $car->destroy();
foreach( 
MyActiveRecord::FindAll('Driver') as $driver $driver->destroy();

?>