DB_DataObject
[ class tree: DB_DataObject ] [ index: DB_DataObject ] [ all elements ]

Class: DB_DataObject

Source Location: /DB_DataObject-0.12/DataObject.php

Class Overview


The main "DB_DataObject" class is really a base class for your own tables classes


Author(s):

Variables

Methods


Child classes:

DB_DataObject_Generator
The main "DB_DataObject" class is really a base class for your own tables classes

Inherited Variables

Inherited Methods


Class Details

[line 123]
The main "DB_DataObject" class is really a base class for your own tables classes

// Set up the class by creating an ini file (refer to the manual for more details [DB_DataObject] database = mysql:/username:password@host/database schema_location = /home/myapplication/database class_location = /home/myapplication/DBTables/ clase_prefix = DBTables_

//Start and initialize...................... - dont forget the & $config = parse_ini_file('example.ini',true); $options = &PEAR::setStaticProperty('DB_DataObject','options'); $options = $config['DB_DataObject'];

// example of a class (that does not use the 'auto generated tables data') class mytable extends DB_DataObject { // mandatory - set the table var $_database_dsn = "mysql://username:password@localhost/database"; var $__table = "mytable"; function _get_table() { return array( 'id' => 1, // integer or number 'name' => 2, // string ); } function _get_keys() { return array('id'); } }

// use in the application

Simple get one row

$instance = new mytable; $instance->get("id",12); echo $instance->somedata;

Get multiple rows

$instance = new mytable; $instance->whereAdd("ID > 12"); $instance->whereAdd("ID < 14"); $instance->find(); while ($instance->fetch()) { echo $instance->somedata; }



[ Top ]


Class Variables

$N =  0

[line 147]

The Number of rows returned from a query
  • Access: public

Type:   int


[ Top ]

$_lastError =  false

[line 1699]

Last Error that has occured
  • use $this->_lastError or
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
  • Var: (or false)
  • Access: public

Type:   object PEAR_Error


[ Top ]



Method Detail

count   [line 778]

int count( )

find the number of results from a simple query

for example

$object = new mytable(); $object->name = "fred"; echo $object->count();

  • Access: public

[ Top ]

debug   [line 1652]

none debug( string $message, [string $logtype = 0], [string $level = 1])

Debugger. - use this in your extended classes to output debugging information.

Uses DB_DataObject::DebugLevel(x) to turn it on

  • Access: public

Parameters:

string   $message     - message to output
string   $logtype     - bold at start
string   $level     
  • output level

[ Top ]

debugLevel   [line 1679]

none debugLevel( [int $v = NULL])

sets and returns debug level eg. DB_DataObject::debugLevel(4);
  • Access: public

Parameters:

int   $v     level

[ Top ]

delete   [line 687]

boolean delete( [boolean $use_where = false])

Deletes items from table which match current objects variables

Returns the true on success

for example

Designed to be extended

$object = new mytable(); $object->ID=123; echo $object->delete(); // builds a conditon $object = new mytable(); $object->whereAdd('age > 12'); $object->delete(true); // use the condition

  • Return: true on success
  • Access: public

Parameters:

boolean   $use_where     use the whereAdd conditions (default = no - use current values.)

[ Top ]

fetch   [line 335]

boolean fetch( )

fetches next row into this objects var's

returns 1 on success 0 on failure

Example $object = new mytable(); $object->name = "fred"; $object->find(); $store = array(); while ($object->fetch()) { echo $this->ID; $store[] = $object; // builds an array of object lines. }

to add features to a fetch function fetch () { $ret = parent::fetch(); $this->date_formated = date('dmY',$this->date); return $ret; }

  • Return: on success
  • Access: public

[ Top ]

fetchRow   [line 723]

boolean fetchRow( [int $row = NULL])

fetches a specific row into this object variables

Not recommended - better to use fetch()

Returens true on success

  • Return: true on success
  • Access: public

Parameters:

int   $row     row

[ Top ]

find   [line 271]

int find( [boolean $n = false])

find results, either normal or crosstable

for example

$object = new mytable(); $object->ID = 1; $object->find();

will set $object->N to number of rows, and expects next command to fetch rows will return $object->N

  • Access: public

Parameters:

boolean   $n     Fetch first result

[ Top ]

get   [line 175]

int get( [string $k = NULL], [string $v = NULL])

Get a result using key, value.

for example $object->get("ID",1234); Returns Number of rows located (usually 1) for success, and puts all the table columns into this classes variables

see the fetch example on how to extend this.

if no value is entered, it is assumed that $key is a value and get will then use the first key in _get_keys to obtain the key.

  • Return: No. of rows
  • Access: public

Parameters:

string   $k     column
string   $v     value

[ Top ]

getDatabaseConnection   [line 1615]

object The &getDatabaseConnection( )

Gets the DB object related to an object - so you can use funky peardb stuf with it :)
  • Return: DB connection
  • Access: public

[ Top ]

getDatabaseResult   [line 1631]

object The &getDatabaseResult( )

Gets the DB result object related to the objects active query
  • so you can use funky pear stuff with it - like pager for example.. :)

  • Return: DB result object
  • Access: public

[ Top ]

getLink   [line 1301]

mixed &getLink( string $row, [string $table = NULL], [string $link = false])

return name from related object

There are two ways to use this, one is to set up a <dbname>.links.ini file into a static property named <dbname>.links and specifies the table joins, the other is highly dependant on naming columns 'correctly' :) using colname = xxxxx_yyyyyy xxxxxx = related table; (yyyyy = user defined..) looks up table xxxxx, for value id=$this->xxxxx stores it in $this->_xxxxx_yyyyy

you can also use $this->getLink('rowname.othertablecol','table','othertablecol')


Parameters:

string   $row     either row or row.xxxxx
string   $table     name of table to look up value in
string   $link     name of column in other table to match

[ Top ]

getLinkArray   [line 1360]

array &getLinkArray( mixed $row, [mixed $table = NULL])

return a list of options for a linked table

This is highly dependant on naming columns 'correctly' :) using colname = xxxxx_yyyyyy xxxxxx = related table; (yyyyy = user defined..) looks up table xxxxx, for value id=$this->xxxxx stores it in $this->_xxxxx_yyyyy

  • Return: of results (empty array on failure)
  • Access: public

[ Top ]

getLinks   [line 1244]

boolean getLinks( )

load related objects

There are two ways to use this, one is to set up a <dbname>.links.ini file into a static property named <dbname>.links and specifies the table joins, the other highly dependent on naming columns 'correctly' :) using colname = xxxxx_yyyyyy xxxxxx = related table; (yyyyy = user defined..) looks up table xxxxx, for value id=$this->xxxxx stores it in $this->_xxxxx_yyyyy


[ Top ]

groupBy   [line 433]

none groupBy( [string $group = false])

Adds a group by condition

$object->groupBy(); //reset the grouping $object->groupBy("ID DESC"); $object->groupBy("ID,age");

  • Access: public

Parameters:

string   $group     Grouping

[ Top ]

insert   [line 510]

mixed|false insert( )

Insert the current objects variables into the database

Returns the ID of the inserted element - mysql specific = fixme?

for example

Designed to be extended

$object = new mytable(); $object->name = "fred"; echo $object->insert();

  • Return: key value or false on failure
  • Access: public

[ Top ]

joinAdd   [line 1435]

none joinAdd( [optional $obj = false])

joinAdd - adds another dataobject to this, building a joined query.

example (requires links.ini to be set up correctly) // get all the images for product 24 $i = new DataObject_Image(); $pi = new DataObjects_Product_image(); $pi->product_id = 24; // set the product id to 24 $i->joinAdd($pi); // add the product_image connectoin $i->find(); while ($i->fetch()) { // do stuff } // an example with 2 joins // get all the images linked with products or productgroups $i = new DataObject_Image(); $pi = new DataObject_Product_image(); $pgi = new DataObject_Productgroup_image(); $i->joinAdd($pi); $i->joinAdd($pgi); $i->find(); while ($i->fetch()) { // do stuff }


Parameters:

optional   $obj     object the joining object (no value resets the join)

[ Top ]

limit   [line 458]

none limit( [string $a = NULL], [string $b = NULL])

Sets the Limit

$boject->limit(); // clear limit $object->limit(12); $object->limit(12,10);

  • Access: public

Parameters:

string   $a     limit start (or number), or blank to reset
string   $b     number

[ Top ]

orderBy   [line 409]

none orderBy( [string $order = false])

Adds a order by condition

$object->orderBy(); //clears order by $object->orderBy("ID"); $object->orderBy("ID,age");

  • Access: public

Parameters:

string   $order     Order

[ Top ]

query   [line 819]

none query( string $string)

sends raw query to database

Since _query has to be a private 'non overwriteable method', this is a relay

  • Return: or PEAR_Error
  • Access: public

Parameters:

string   $string     SQL Query

[ Top ]

raiseError   [line 1712]

error raiseError( int $message, [int $type = NULL], [int $behaviour = NULL])

Default error handling is to create a pear error, but never return it.

if you need to handle errors you should look at setting the PEAR_Error callback this is due to the fact it would wreck havoc on the internal methods!

  • Return: object
  • Access: public

Parameters:

int   $message     message
int   $type     type
int   $behaviour     behaviour (die or continue!);

[ Top ]

selectAdd   [line 483]

none selectAdd( [string $k = NULL])

Adds a select columns

$object->selectAdd(); // resets select to nothing! $object->selectAdd("*"); // default select $object->selectAdd("unixtime(DATE) as udate"); $object->selectAdd("DATE");

  • Access: public

Parameters:

string   $k     

[ Top ]

setFrom   [line 1536]

boolean setFrom( array &$from)

Copies items that are in the table definitions from an array or object into the current object will not override key values.
  • Return: , true on success
  • Access: public

Parameters:

array   &$from     | object $from

[ Top ]

staticGet   [line 214]

object &staticGet( string $class, string $k, [string $v = NULL])

An autoloading, caching static get method using key, value (based on get)

Usage: $object = DB_DataObject::staticGet("DbTable_mytable",12); or $object = DB_DataObject::staticGet("DbTable_mytable","name","fred");

or write it into your extended class: function &staticGet($k,$v=NULL) { return DB_DataObject::staticGet("This_Class",$k,$v); }

  • Access: public

Parameters:

string   $class     class name
string   $k     column (or value if using _get_keys)
string   $v     value (optional)

[ Top ]

staticInitialize   [line 1739]

error staticInitialize( )

Define the $GLOBALS['_DB_DATAOBJECT_PRODUCTION'] variable

After Profiling DB_DataObject, I discoved that the debug calls where taking considerable time (well 0.1 ms), so this should stop those calls happening. by setting production =1 in the config, you disable all debug calls.. THIS STILL NEEDS FURTHER INVESTIGATION

  • Return: object
  • Access: public

[ Top ]

update   [line 613]

boolean update( )

Updates current objects variables into the database uses the _get_keys() to decide how to update Returns the true on success

for example

$object = new mytable(); $object->get("ID",234); $object->email="testing@test.com"; if(!$object->update()) echo "UPDATE FAILED";

  • Return: true = success
  • Access: public

[ Top ]

validate   [line 1580]

array validate( )

validate - override this to set up your validation rules

validate the current objects values either just testing strings/numbers or using the user defined validate{Row name}() methods. will attempt to call $this->validate{column_name}() - expects true = ok false = ERROR you can the use the validate Class from your own methods.

  • Return: of validation results or true
  • Access: public

[ Top ]

whereAdd   [line 385]

none whereAdd( [string $cond = false], [string $logic = 'AND'])

Adds a condition to the WHERE statement, defaults to AND

$object->whereAdd(); //reset or cleaer ewhwer $object->whereAdd("ID > 20"); $object->whereAdd("age > 20","OR");

  • Access: public

Parameters:

string   $cond     condition
string   $logic     optional logic "OR" (defaults to "AND")

[ Top ]


Documentation generated on Fri, 30 Apr 2004 22:11:20 +0200 by phpDocumentor 1.2.3. PEAR Logo Copyright © PHP Group 2004.