8.5 数据库模型操作
//模型层
<?php namespace app\demo\model; use think\Model; class Student extends Model{ //获取器 public function getSsexAttr($val){ switch($val){ case 1: return "男"; break; case 2: return "女"; break; default: return "未知"; break; } } //修改器 public function setClassAttr($val){ return md5($val); } //设置,如果没有赋值,需要自动完成的字段 public $auto = ['Sno','Ssex']; public function setSnoAttr(){ return 18; } public function setSsexAttr(){ return 1111; } } ?>
控制层
<?php namespace app\demo\controller; use think\Controller; use app\demo\model\Student;//引入模型 class Demo extends Controller{ public function test(){ //得到student表中id为4的而数据 $student = new Student; //dump($student->get(4)->toArray()); //查询操作 //1 条件查询 //dump($student->get(["sno"=>101])->toArray()); //2 闭包查询 /*$data = $student->get(function($query){ $query->where('Sname','孙权'); }); dump($data->toArray());*/ //3 find方法 //$data = $student->where('Sname','刘备')->find(); //4 查询多条数据 /*$data = Student::all('1,2,3'); foreach($data as $key=>$stu){ dump($stu->toArray()); }*/ //5 插入数据 //插入一条 /*$student->data(['id'=>'','Sno'=>'1000','Sname'=>'哈哈','Ssex'=>"男",'Sbirthday'=>"男","Class"=>"96080"]); $student->save(); //插入多条 $list = [ ['id'=>'','Sno'=>'1000','Sname'=>'哈哈','Ssex'=>"男",'Sbirthday'=>"男","Class"=>"96080"], ['id'=>'','Sno'=>'1000','Sname'=>'哈哈','Ssex'=>"男",'Sbirthday'=>"男","Class"=>"96080"] ]; dump($user->saveAll($list,false)); */ //更新 /*$student->save(['Sname' => '张辽','Sno' => 201], ['id' => 1]);*/ //根据主键删除 //Student::destroy([1,2,3]); // 条件删除 :删除id为0的数据 //Student::destroy(['id' => 0]); //获取器 /*$data = $student->get(['id'=>'7']); dump($data->toArray());*/ //修改器 /*$data = $student->save(['Class'=>'345'],['id'=>'9']); dump($data);*/ //自动完成 //这里没有对age和sex赋值 /*$data = $student->save(['Class'=>'345'],['id'=>'8']); dump($data);*/ } } //时间戳 /* 系统支持自动写入创建和更新的时间戳字段 第一种方式,是在数据库配置文件中添加全局设置: // 开启自动写入时间戳字段 'auto_timestamp' => true, 第二种是直接在单独的模型类里面设置: protected $autoWriteTimestamp = true; 如果这两个地方设置为true,默认识别为整型int类型,如果你的时间字段不是int类型的话,例如使用datetime类型的话,可以这样设置: // 开启自动写入时间戳字段 'auto_timestamp' => 'datetime', 或者 protected $autoWriteTimestamp = 'datetime';*/ ?>