\Horde_Rdo_Mapper

Rdo Mapper class.

Controls mapping of entity obects (instances of Horde_Rdo_Base) from and to Horde_Db_Adapters.

Public properties: $adapter - Horde_Db_Adapter that stores this Mapper's objects.

$inflector - The Horde_Support_Inflector this mapper uses to singularize and pluralize PHP class, database table, and database field/key names.

$table - The Horde_Db_Adapter_Base_TableDefinition object describing the main table of this entity.

Summary

Methods
Properties
Constants
__construct()
setFactory()
__get()
map()
mapFields()
tableToMapper()
mapperToTable()
mapperToEntity()
count()
exists()
create()
update()
delete()
find()
addRelation()
removeRelation()
findOne()
sortBy()
No public properties found
No constants found
No protected methods found
$_setTimestamps
$_classname
$_tableDefinition
$_lazyFields
$_relationships
$_lazyRelationships
$_defaultSort
$_factory
N/A
No private methods found
No private properties found
N/A

Properties

$_setTimestamps

$_setTimestamps : boolean

If this is true and fields named created_at and updated_at are present, Rdo will automatically set creation and last updated timestamps.

Timestamps are always GMT for portability.

Type

boolean

$_classname

$_classname : string

What class should this Mapper create for objects? Defaults to the Mapper subclass' name minus "Mapper". So if the Rdo_Mapper subclass is UserMapper, it will default to trying to create User objects.

Type

string

$_tableDefinition

$_tableDefinition : \Horde_Db_Adapter_Base_TableDefinition

The definition of the database table (or view, etc.) that holds this Mapper's objects.

Type

\Horde_Db_Adapter_Base_TableDefinition

$_lazyFields

$_lazyFields : array

Fields that should only be read from the database when they are accessed.

Type

array

$_relationships

$_relationships : array

Relationships for this entity.

Type

array

$_lazyRelationships

$_lazyRelationships : array

Relationships that should only be read from the database when they are accessed.

Type

array

$_defaultSort

$_defaultSort : string

Default sorting rule to use for all queries made with this mapper. This is a SQL ORDER BY fragment (without 'ORDER BY').

Type

string

$_factory

$_factory : \Horde_Rdo_Factory

The caching factory, if used

Type

\Horde_Rdo_Factory

Methods

__construct()

__construct(\Horde_Db_Adapter  $adapter) 

Parameters

\Horde_Db_Adapter $adapter

setFactory()

setFactory(\Horde_Rdo_Factory  $factory = null) : \Horde_Rdo_Mapper

Attach a Horde_Rdo_Factory to the mapper.

If called without arguments, detaches the mapper from factory

Parameters

\Horde_Rdo_Factory $factory

A Factory instance or null

Returns

\Horde_Rdo_Mapper

this mapper

__get()

__get(string  $key) : mixed

Provide read-only, on-demand access to several properties. This method will only be called for properties that aren't already present; once a property is fetched once it is cached and returned directly on any subsequent access.

These properties are available:

adapter: The Horde_Db_Adapter this mapper is using to talk to the database.

factory: The Horde_Rdo_Factory instance, if present

inflector: The Horde_Support_Inflector this Mapper uses to singularize and pluralize PHP class, database table, and database field/key names.

table: The database table or view that this Mapper manages.

tableDefinition: The Horde_Db_Adapter_Base_TableDefinition object describing the table or view this Mapper manages.

fields: Array of all field names that are loaded up front (eager loading) from the table.

lazyFields: Array of fields that are only loaded when accessed.

relationships: Array of relationships to other Mappers.

lazyRelationships: Array of relationships to other Mappers which are only loaded when accessed.

Parameters

string $key

Property name to fetch

Returns

mixed —

Value of $key

map()

map(array  $fields = array()) : \Horde_Rdo_Base

Create an instance of $this->_classname from a set of data.

Parameters

array $fields

Field names/default values for the new object.

Returns

\Horde_Rdo_Base

An instance of $this->_classname with $fields as initial data.

mapFields()

mapFields(\Horde_Rdo_Base  $object, array  $fields = array()) 

Update an instance of $this->_classname from a set of data.

Parameters

\Horde_Rdo_Base $object

The object to update

array $fields

Field names/default values for the object

tableToMapper()

tableToMapper(string  $table) : \Horde_Rdo_Mapper

Transform a table name to a mapper class name.

Parameters

string $table

The database table name to look up.

Returns

\Horde_Rdo_Mapper

A new Mapper instance if it exists, else null.

mapperToTable()

mapperToTable() : string

Transform this mapper's class name to a database table name.

Returns

string —

The database table name.

mapperToEntity()

mapperToEntity() : string

Transform this mapper's class name to an entity class name.

Returns

string —

A Horde_Rdo_Base concrete class name if the class exists, else null.

count()

count(mixed  $query = null) : integer

Count objects that match $query.

Parameters

mixed $query

The query to count matches of.

Returns

integer —

All objects matching $query.

exists()

exists(mixed  $query) : boolean

Check if at least one object matches $query.

Parameters

mixed $query

Either a primary key, an array of keys => values, or a Horde_Rdo_Query object.

Returns

boolean —

True or false.

create()

create(array  $fields) : \Horde_Rdo_Base

Create a new object in the backend with $fields as initial values.

Parameters

array $fields

Array of field names => initial values.

Returns

\Horde_Rdo_Base

The newly created object.

update()

update(string|\Rdo  $object, array  $fields = null) : integer

Updates a record in the backend. $object can be either a primary key or an Rdo object. If $object is an Rdo instance then $fields will be ignored as values will be pulled from the object.

Parameters

string|\Rdo $object

The Rdo instance or unique id to update.

array $fields

If passing a unique id, the array of field properties to set for $object.

Returns

integer —

Number of objects updated.

delete()

delete(string|\Horde_Rdo_Base|\Horde_Rdo_Query  $object) : integer

Deletes a record from the backend. $object can be either a primary key, an Rdo_Query object, or an Rdo object.

Parameters

string|\Horde_Rdo_Base|\Horde_Rdo_Query $object

The Rdo object, Horde_Rdo_Query, or unique id to delete.

Returns

integer —

Number of objects deleted.

find()

find(  $arg = null) 

find() can be called in several ways.

Primary key mode: pass find() a numerically indexed array of primary keys, and it will return a list of the objects that correspond to those keys.

If you pass find() no arguments, all objects of this type will be returned.

If you pass find() an associative array, it will be turned into a Horde_Rdo_Query object.

If you pass find() a Horde_Rdo_Query, it will return a list of all objects matching that query.

Parameters

$arg

addRelation()

addRelation(string  $relationship, \Horde_Rdo_Base  $ours, \Horde_Rdo_Base  $theirs) 

Adds a relation.

  • For one-to-one relations, simply updates the relation field.
  • For one-to-many relations, updates the related object's relation field.
  • For many-to-many relations, adds an entry in the "through" table.
  • Performs a no-op if the peer is already related.

Parameters

string $relationship

The relationship key in the mapper.

\Horde_Rdo_Base $ours

The object from this mapper to add the relation.

\Horde_Rdo_Base $theirs

The other object from any mapper to add the relation.

Throws

\Horde_Rdo_Exception

removeRelation()

removeRelation(string  $relationship, \Horde_Rdo_Base  $ours, \Horde_Rdo_Base  $theirs = null) : integer

Removes a relation to one of the relationships defined in the mapper.

  • For one-to-one and one-to-many relations, simply sets the relation field to 0.
  • For many-to-many, either deletes all relations to this object or just the relation to a given peer object.
  • Performs a no-op if the peer is already unrelated.

This is a proxy to the mapper's removeRelation method.

Parameters

string $relationship

The relationship key in the mapper.

\Horde_Rdo_Base $ours

The object from this mapper.

\Horde_Rdo_Base $theirs

The object to remove from the relation.

Throws

\Horde_Rdo_Exception

Returns

integer —

the number of affected relations

findOne()

findOne(  $arg = null) 

findOne can be called in several ways.

Primary key mode: pass find() a single primary key, and it will return a single object matching that primary key.

If you pass findOne() no arguments, the first object of this type will be returned.

If you pass findOne() an associative array, it will be turned into a Horde_Rdo_Query object.

If you pass findOne() a Horde_Rdo_Query, it will return the first object matching that query.

Parameters

$arg

sortBy()

sortBy(string  $sort) 

Set a default sort rule for all queries done with this Mapper.

Parameters

string $sort

SQL sort fragment, such as 'updated DESC'