枢际劳虹馆麓概粮铆沛矢拔百
1.打开Model类,复制如下代码:
D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\library\think\Model.php:
2.Staff.php
<?php namespace app\index\model; use think\Model;//引入Model类 class Staff extends Model { // 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 protected $autoWriteTimestamp=true; // 创建时间字段 protected $createTime = 'create_time';//名称可以修改为自己喜欢的如create_tm // 更新时间字段 protected $updateTime = 'update_time';//名称可以修改为自己喜欢的如update_tm }
在数据表staff中创建create_time,和update()字段
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::create([ 'name'=>'武松' ]); if($result) { return $result->name."添加成功"; } else { $result->getError(); } } }
执行:
添加数据成功,此时在数据表中自动添加了创建时间戳和更新时间戳
更新数据,将武松变为武大郎
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::update([ 'name'=>'武大郎' ],['id'=>34]); if($result) { return $result->name."更新成功"; } else { $result->getError(); } } }
执行:
此时update_time字段自动更新
自动完成意思如:新增时只添加了name字段,其他没有手动添加的字段就可以使用自动完成
$auto可以看做是$insert和$uppdate的集合
复制Model类中的代码:
D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\library\think\Model.php:
设置插入自动完成的操作
<?php namespace app\index\model; use think\Model;//引入Model类 class Staff extends Model { // 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 protected $autoWriteTimestamp=true; // 创建时间字段 protected $createTime = 'create_time';//名称可以修改为自己喜欢的如create_tm // 更新时间字段 protected $updateTime = 'update_time';//名称可以修改为自己喜欢的如update_tm // 保存自动完成列表 protected $auto = []; // 新增自动完成列表 protected $insert = [ //在新增操作时,如果用户没有输入如下信息 //则自动将性别设置为1,年龄设置为18,时间设置为2017-01-01 //因为用户是不可能输入时间戳的所以自动的时间设置为2017-01-01 'sex'=>1, 'age'=>18, 'hiredate'=>'2017-01-01' ]; // 更新自动完成列表 protected $update = []; //配置类型转换属性,将2017-01-01转换为时间戳 protected $type=[ 'hiredate'=>'timestamp' ]; }
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::create([ 'name'=>'西门庆' ]); if($result) { return $result->name."添加成功"; } else { $result->getError(); } } }
执行:
设置更新自动完成的操作
更新时,没有填部门,则设置默认部门为培训部
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\model\Staff.php:
<?php namespace app\index\model; use think\Model;//引入Model类 class Staff extends Model { // 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 protected $autoWriteTimestamp=true; // 创建时间字段 protected $createTime = 'create_time';//名称可以修改为自己喜欢的如create_tm // 更新时间字段 protected $updateTime = 'update_time';//名称可以修改为自己喜欢的如update_tm // 保存自动完成列表 protected $auto = []; // 新增自动完成列表 protected $insert = [ //在新增操作时,如果用户没有输入如下信息 //则自动将性别设置为1,年龄设置为18,时间设置为2017-01-01 //因为用户是不可能输入时间戳的所以自动的时间设置为2017-01-01 'sex'=>1, 'age'=>18, 'hiredate'=>'2017-01-01' ]; // 更新自动完成列表 protected $update = [ 'dept'=>'培训部' ]; //配置类型转换属性,将2017-01-01转换为时间戳 protected $type=[ 'hiredate'=>'timestamp' ]; }
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::update([ 'name'=>'西门庆' ],['id'=>35]); if($result) { return $result->name."更新成功"; } else { $result->getError(); } } }
执行:
如果插入和更新时,有一些字段的值是相同的,不会发生变化,则可以在auto属性中进行配置
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\model\Staff.php:
<?php namespace app\index\model; use think\Model;//引入Model类 class Staff extends Model { // 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 protected $autoWriteTimestamp=true; // 创建时间字段 protected $createTime = 'create_time';//名称可以修改为自己喜欢的如create_tm // 更新时间字段 protected $updateTime = 'update_time';//名称可以修改为自己喜欢的如update_tm // 保存自动完成列表 protected $auto = [ //可以认为无论是新增还是更新操作年龄都是30 'age'=>30 ]; // 新增自动完成列表 protected $insert = [ //在新增操作时,如果用户没有输入如下信息 //则自动将性别设置为1,年龄设置为18,时间设置为2017-01-01 //因为用户是不可能输入时间戳的所以自动的时间设置为2017-01-01 'sex'=>1, 'hiredate'=>'2017-01-01' ]; // 更新自动完成列表 protected $update = [ 'dept'=>'培训部' ]; //配置类型转换属性,将2017-01-01转换为时间戳 protected $type=[ 'hiredate'=>'timestamp' ]; }
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
更新操作触发auto属性
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::update([ 'name'=>'西门庆2号' ],['id'=>35]); if($result) { return $result->name."更新成功"; } else { $result->getError(); } } }
执行:
新增操作触发属性auto自动完成
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::create([ 'name'=>'宋江' ]); if($result) { return $result->name."添加成功"; } else { $result->getError(); } } }
执行:
实战
实现这样的预期:
如果公司新增的员工sex字段为0(女性),分配到客服部。sex字段为1(男性),分配到开发部。
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\model\Staff.php:
<?php namespace app\index\model; use think\Model;//引入Model类 class Staff extends Model { // 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 protected $autoWriteTimestamp=true; // 创建时间字段 protected $createTime = 'create_time';//名称可以修改为自己喜欢的如create_tm // 更新时间字段 protected $updateTime = 'update_time';//名称可以修改为自己喜欢的如update_tm // 保存自动完成列表 protected $auto = [ //可以认为无论是新增还是更新操作年龄都是30 'age'=>30 ]; // 新增自动完成列表 protected $insert = [ 'dept',//保持为空,部门名称,根据员工性别sex字段的值确定 //需要在下方为dept创建修改器 'hiredate'=>'2017-01-01' ]; // 更新自动完成列表 protected $update = [ 'dept'=>'培训部' ]; //配置类型转换属性,将2017-01-01转换为时间戳 protected $type=[ 'hiredate'=>'timestamp' ]; //为dept设置修改器 protected function setDeptAttr($dept,$data) { if($data['sex']==1) { return $this->dept='开发部'; } else { return $this->dept='客服部'; } } }
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
添加sex=0的李师师
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::create([ 'name'=>'李师师', 'sex'=>0 ]); if($result) { return $result->name."添加成功"; } else { $result->getError(); } } }
执行:
添加sex=1的燕青
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
<?php namespace app\index\controller; use app\index\model\Staff; class Index { public function index() { $result=Staff::create([ 'name'=>'燕青', 'sex'=>1 ]); if($result) { return $result->name."添加成功"; } else { $result->getError(); } } }
执行:
疲恒币咕品破念钳峭姜截凄额