网站

thinkphp5 类型转换 自动完成

分类 :thinkphp5     2019-04-15 人气:0 0条评论

类型转换

支持给字段设置类型自动转换,会在写入和读取的时候自动进行类型转换处理:

在模型中定义

class Tp extends Model
{
	//类型转换
	protected $type =array(  //newtime和tel都是字段
		'newtime' => 'timestamp:Y-m-d',  //timestamp时间类型
		'tel' => 'serialize',		//serialize序列化
	);
}
我们在上面定义了一个Tp模型,那么便可以添加protected $type =array();,并在里面定义类型转换

timestamp

时间格式转换,timestamp后面的Y-m-d输出为2019-04-15的格式,如果我们写成Y/m/d那么便会以2019/04/15,也可以使用其它符号的。

serialize

指定为序列化类型的话,数据会自动序列化写入,并且在读取的时候自动反序列化。
$tp->tel = ['aa'=>11];
如我们为tel字段指定了序列化类型转换,经上面的语句后,存入数据库的将不是11而是a:1:{s:2:"aa";i:11;}
反序列化
因为进行了反序列化,所以输出时便会是用的数组

$tp = Tp::get(1);
		dump($tp['tel']);
我们提取刚才输入的tel内容,结果输出为
array(1) {
  ["aa"] => int(11)
}

自动完成

方便我们在添加或修改时,自动往数据库中添加某些数据,如当前时间等
自动完成是在模型中定义,类型包含:$insert 是添加时,$update是更改时 $auto是insert和update时都使用这个自动完成

在模型中定义

class Tp extends Model
{
	//自动完成
	//$insert 是添加时,$update是更改时 $auto是insert和update时都使用这个自动完成
	protected $insert = array(
		'sex' => 0, //将默认性别添加为0
	);
}

页面中使用

我们往数据库中加入一条balala的内容
$tp = Tp::get(1);		
		Tp::create(['name'=>'balala']);
可以看到并没有添加sex的内容,但数据库中sex字段会自动填充为0

评论

大侠名号:   验证暗号: 点击我更换图片

继续阅读