当获取和保存记录时,你可以让模型对某些字段做特殊处理。
Note | |
---|---|
当模型检查数据库时,它会自动识别自增字段,所以自增自段不需要特殊验证。 |
$_created_col
属性表明:当某记录是第一次插入数据表中时,表中的某个字段自动由时间戳填充。默认情况下,这个字段名字是created
,但是你可以用你喜欢的任何名字。如果该字段不存在或$_created_col
属性为空,那么就不会发生特殊处理。
<?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';
}
}
$_updated_col
属性表明:当数据表中某记录更新时,表中的某个字段自动由时间戳填充。默认情况下,这个字段名字是updated
,但是你可以用你喜欢的任何名字。如果该字段不存在或$_updated_col
属性为空,那么就不会发生特殊处理。
<?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';
}
}
$_sequence_cols
属性表明:当数据表中一个或多个字段为空时,它们将被一个数列填充。$_sequence_cols
属性的键是字段名,值是数列名。如果是单值形式,那么它即是字段名也是数列名。
<?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';
}
}
$_serialize_cols
属性指定那些插入数据库之前和获取数据时需要被序列化(serialize())和反序列化(unserialize())的字段。这使你可以无缝地使用数组作为记录对象属性。
<?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';
}
}
$_xmlstruct_cols
属性指明了这些字段:从数据库获取记录时需转化为Solar_Struct_Xml对象,保存记录时又需转回为XML格式。这使你可以无缝使用XML结构对象作为记录属性。
<?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';
}
}