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';*/
?>

 

posted @ 2018-08-05 17:15  sun1987  阅读(173)  评论(0编辑  收藏  举报