Login   Register  
PHP Classes
elePHPant
Icontem

File: examples/ptcmapper-ex.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Carlo Pietrobattista  >  PHP ORM Library  >  examples/ptcmapper-ex.php  >  Download  
File: examples/ptcmapper-ex.php
Role: Example script
Content type: text/plain
Description: example file
Class: PHP ORM Library
Store and retrieve objects from databases with PDO
Author: By
Last change:
Date: 6 months ago
Size: 4,401 bytes
 

Contents

Class file image Download
<?php

    
/**
    * PTCMAPPER OBJECT RELATIONAL MAPPING CLASS EXAMPLE FILE
    * PTCMAPPER DEPENDS ON PTCDB AND PTCQUERYBUILDER COMPONENTS
    * THEREFORE, IT IS NOT A STAND-ALONE CLASS
    *
    * OBSERVERS CAN BE ADDED TO THE CLASS WITH THE PTCEVENT COMPONENT
    *
    */

    /*** DB DETAILS NEEDED FOR THE EXAMPLE TO WORK ***/
    
$db'user' ] = 'user';                // mysql user
    
$db'pass' ] = 'pass';                // mysql pass
    
$db'database' ] = 'database';        // mysql database name
    /*************************************************************/
    
    
require_once( '../PtcDb.php' ); // including the PtcDb class

    /* ADDING DATABASE CONNECTION WITH THE QUERY BUILDER CLASS SUPPORT */
    
require_once( '../PtcQueryBuilder.php' ); // including the Query Builder class
    
PtcDb::add( array
    (
        
'user'            =>    $db'user' ],
        
'pass'            =>    $db'pass' ],
        
'db'            =>    $db'database' ],
        
'query_builder'    =>    true,    // initialize the query builder
    
) );
    
    
/* CREATE THE EXAMPLE TABLE */
    
PtcDb::run"DROP TABLE IF EXISTS `test_table`" );
    
PtcDb::run"CREATE TABLE `test_table` 
    (
        `id` int NOT NULL AUTO_INCREMENT, 
        PRIMARY KEY(`id`),
        `field1` varchar(255),
        `field2` varchar(255)
    )" 
);


    require_once( 
'../PtcMapper.php' ); // including the ORM class


    /* EXTENDING THE CLASS WITH THE TABLE NAME */
    
class Test_Table extends PtcMapper
    
{
        
/* USING THE CLASS NAME AS TABLE */
        //protected static $_table = ''; 
        
        /* MAP FIELD NAMES IF "AS" IS USED IN A SELECT QUERY */
        //protected static $_map = array( 'field1' => 'test' ); 
    
        /* USE THIS PROPERTY IF THE TABLE USES ANOTHER 
        *  COLUMN NAME FOR THE PRIMARY KEY */
        //protected static $_uniqueKey = 'id';
        
        /* OBSERVER EXAMPLE, WORKS WITH PTCEVENT COMPONENT */
        
public static function saved$data $result )
        {
            
// do some stuff here after save( ) is called
            //var_dump( $result );
            //var_dump( $data );
        
}
    }
    
    
    
/* USING OBSERVERS WITH PTCEVENT COMPONENT */
    //Test_Table::observe( ); // observe events
    //Test_Table::observe( 'some_class' ); // use other class as observer
    
    
    /* ADDING NEW RECORDS */
    
$data = new Test_Table( );
    
$data->field1 'some value';
    
$data->field2 'some other value';
    
$data->save( );
    

    
/* CREATING NEW RECORD FROM ASSOCIATIVE ARRAY */
    
$arr = array( 'field1' => 'created from array' 'field2' => 'created from array' );
    
$created Test_Table::create$arr );
    
$created->save( );
    
//Test_Table::create( $arr )->save( ); // in 1 line

    
    /* LAST INSERTED ID */
    
print "<br><br><b>Last inserted id:</b> "
    print 
$last_id Test_Table::lastId( );
    print 
"<br><br>";
    
    
    
/* RETRIEVING 1 ROW BASED ON ID */
    
$data Test_Table::find);
    print 
"<b>Getting 1 row:</b><br>";
    print 
$data->field1 "<br>";
    print 
$data->field2 "<br><br>";
    
    
    
/* RETRIEVING ALL RECORDS FROM TABLE */
    
$data Test_Table::all( );
    print 
"<b>Looping through all records:</b><br>";
    foreach( 
$data as $v )
    {
        print 
$v->field1 "<br>";
        print 
$v->field2 "<br>";
    }
    print 
"<br>";
    
    
    
/* UPDATING RECORDS */
    
$data Test_Table::find$last_id );
    
$data->field1 'updated value';
    
$data->field2 'updated value';
    
$data->save( );
    
    
    
/* DELETING RECORDS */
    
$data Test_Table::find$last_id );
    
$data->delete( ); // delete retrieved record
    //Test_Table::find( $last_id )->delete( ); // same as above but in 1 line
    //Test_Table::where('field1', '!=', 'some value' )->delete()->run( ); // using the query builder directly
    
    
    /* RETRIEVING ONLY 1 COLUMN VALUE */
    
print '<b>Retrieve 1 column value based on id:</b> ';
    print 
Test_Table::get_field1); // retrieving by id
    
print "<br><br><b>Retrieving 1 column value based on query:</b> ";
    print 
Test_Table::get_field2'field1' 'some value' ); // select field2 where field1 = 'some value'
    
print "<br><br>";
    
    
    
/* UPDATING ONLY 1 COLUMN VALUE BASED ON ID */
    
Test_Table::set_field1'new value saved' ); // set field1 = 'new value saved' where id = 1
    

    /* USING THE QUERY BUILDER METHODS DIRECTLY */
    
$data Test_Table::where'id' '!=' )->run( );
    print 
"<b>Using the query builder directly:</b><br>";
    foreach( 
$data as $v )
    {
        print 
$v->field1 "<br>";
        print 
$v->field2 "<br>";
        
/* CONVERT TO ARRAY */
        
$to_arr $v->toArray( );
        
/* CONVERT TO JSON */
        
$to_json $v->toJson( );
    }
    print 
"<br>";
    
    
    
/* GET THE COLUMN NAMES */
    
print "<b>Getting table column names:</b> <pre>";
    print 
print_rTest_Table::getColumns( ) , true ) . "</pre><br>";