支持給字段設(shè)置類型自動(dòng)轉(zhuǎn)換,會(huì)在寫入和讀取的時(shí)候自動(dòng)進(jìn)行類型轉(zhuǎn)換處理,例如:

class User extends Model 
{
    protected $type = [
        'status'    =>  'integer',
        'score'     =>  'float',
        'birthday'  =>  'datetime',
        'info'      =>  'array',
    ];
}

下面是一個(gè)類型自動(dòng)轉(zhuǎn)換的示例:

$user = new User;
$user->status = '1';
$user->score = '90.50';
$user->birthday = '2015/5/1';
$user->info = ['a'=>1,'b'=>2];
$user->save();
var_dump($user->status); // int 1
var_dump($user->score); // float 90.5;
var_dump($user->birthday); // string '2015-05-01 00:00:00'
var_dump($user->info);// array (size=2) 'a' => int 1  'b' => int 2

數(shù)據(jù)庫(kù)查詢默認(rèn)取出來(lái)的數(shù)據(jù)都是字符串類型,如果需要轉(zhuǎn)換為其他的類型,需要設(shè)置,支持的類型包括如下類型:

integer

設(shè)置為integer(整型)后,該字段寫入和輸出的時(shí)候都會(huì)自動(dòng)轉(zhuǎn)換為整型。

float

該字段的值寫入和輸出的時(shí)候自動(dòng)轉(zhuǎn)換為浮點(diǎn)型。

boolean

該字段的值寫入和輸出的時(shí)候自動(dòng)轉(zhuǎn)換為布爾型。

array

如果設(shè)置為強(qiáng)制轉(zhuǎn)換為array類型,系統(tǒng)會(huì)自動(dòng)把數(shù)組編碼為json格式字符串寫入數(shù)據(jù)庫(kù),取出來(lái)的時(shí)候會(huì)自動(dòng)解碼。

object

該字段的值在寫入的時(shí)候會(huì)自動(dòng)編碼為json字符串,輸出的時(shí)候會(huì)自動(dòng)轉(zhuǎn)換為stdclass對(duì)象。

serialize

指定為序列化類型的話,數(shù)據(jù)會(huì)自動(dòng)序列化寫入,并且在讀取的時(shí)候自動(dòng)反序列化。

json

指定為json類型的話,數(shù)據(jù)會(huì)自動(dòng)json_encode寫入,并且在讀取的時(shí)候自動(dòng)json_decode處理。

timestamp

指定為時(shí)間戳字段類型的話,該字段的值在寫入時(shí)候會(huì)自動(dòng)使用strtotime生成對(duì)應(yīng)的時(shí)間戳,輸出的時(shí)候會(huì)自動(dòng)轉(zhuǎn)換為dateFormat屬性定義的時(shí)間字符串格式,默認(rèn)的格式為Y-m-d H:i:s,如果希望改變其他格式,可以定義如下:

class User extends Model 
{
    protected $dateFormat = 'Y/m/d';
    protected $type = [
        'status'    =>  'integer',
        'score'     =>  'float',
        'birthday'  =>  'timestamp',
    ];
}

或者在類型轉(zhuǎn)換定義的時(shí)候使用:

class User extends Model 
{
    protected $type = [
        'status'    =>  'integer',
        'score'     =>  'float',
        'birthday'  =>  'timestamp:Y/m/d',
    ];
}

然后就可以

$user = User::find(1);
echo $user->birthday; // 2015/5/1

datetime

timestamp類似,區(qū)別在于寫入和讀取數(shù)據(jù)的時(shí)候都會(huì)自動(dòng)處理成時(shí)間字符串Y-m-d H:i:s的格式。