You can tell the model to apply special processing to certain columns when records are fetched and saved.
|
Note |
|---|---|
|
Auto-increment columns are recognized by the model automatically when it examines the database, and so don't need special identification. |
The $_created_col property notes a table column
to be automatically populated with the timestamp when the row
is first inserted to the database. By default, the column is
called created, but you can call it anything
you like. If the column is not present, or if $_created_col
is empty, no special processing occurs.
<?php
class Vendor_Model_Foo extends Vendor_Sql_Model
{
public function _setup()
{
// use a column called "first_added" as the created timestamp column
$this->_created_col = 'first_added';
}
}
The $_updated_col property notes a table column
to be automatically populated with the timestamp when the row
is updated at the database. By default, the column is
called updated, but you can call it anything
you like. If the column is not present, or if $_updated_col
is empty, no special processing occurs.
<?php
class Vendor_Model_Foo extends Vendor_Sql_Model
{
public function _setup()
{
// use a column called "last_changed" as the updated timestamp column
$this->_updated_col = 'last_changed';
}
}
The $_sequence_cols property notes one ore more
table column to be automatically populated with the value of a
sequence when the column is null. The key is the column name,
and the value is the sequence name. If only a value is present,
it is used as both the column name *and* the seqence name.
<?php
class Vendor_Model_Foo extends Vendor_Sql_Model
{
public function _setup()
{
// when "bar" is empty, popualate it with the next value
// from the sequence "zim"
$this->_sequence_cols['bar'] = 'zim';
// when "dib" us empty, populate it with the next value
// from the sequence also called "dib"
$this->_sequence_cols[] = 'dib';
}
}
The $_serialize_cols property identifies
columns that should be serialize()d when saved to the
database, and unserialize()d when they are retrieved. This
allows you to seamlessly use an array as a record property.
<?php
class Vendor_Model_Foo extends Vendor_Sql_Model
{
public function _setup()
{
// the column 'user_prefs' should be serialized on save,
// and unserialized on retrieval
$this->_serialize_cols[] = 'user_prefs';
}
}
The $_xmlstruct_cols property identifies
columns that should be converted to Solar_Struct_Xml objects
when retrieved from the database, and back to XML when saved to
the database. This allows you to seamlessly work with an
XML-struct object as a record properties.
<?php
class Vendor_Model_Foo extends Vendor_Sql_Model
{
public function _setup()
{
// the column 'xmldata' should be converted to a Solar_Struct_Xml
// object on retrieval, and back to XML on save
$this->_xmlstruct_cols[] = 'xmldata';
}
}