PHP Classes

File: examples/ptcmapper-ex.php

Recommend this page to a friend!
  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: 10 years 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( 1 );
    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( 1 ); // 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' , 1 ); // set field1 = 'new value saved' where id = 1
   

    /* USING THE QUERY BUILDER METHODS DIRECTLY */
   
$data = Test_Table::where( 'id' , '!=' , 2 )->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_r( Test_Table::getColumns( ) , true ) . "</pre><br>";