模型的增删改查

Original 2019-03-15 23:12:46 290
abstract:<?php //模型 namespace app\index\model; use think\Model; use think\model\concern\SoftDelete;//导入软删除  他是trait方法集 class Staff extends Model {    &
<?php
//模型
namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;//导入软删除  他是trait方法集
class Staff extends Model
{
    use SoftDelete;//相当于把trait类里面的代码复制到这里
    //设置数据表名称       直接与要操作的数据表绑定
    protected $table = 'user';
    //设置主键:默认是id,不是的话就要进行设置
    protected $pk = 'id';
    //设置删除时间的字段名
    protected $deleteTime = 'delete_time';//这个会在数据表中创建一个字段来保存删除的时间戳
    //设置软删除字段的默认值
    protected $defaultSoftDelete = 0;
}
//操作
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Staff as StaffModel;
use think\Db;
use think\model\concern\SoftDelete;//设置模型类别名

class Staff extends Controller
{
    //实例化模型  new StaffModel()
    public function instance(StaffModel $staff)//这里用依赖注入   只要有类型约束,在外部系统就会自动实例化对象
    {
         dump($staff->getName());//查看模型名称
        //新增一条记录
        $staff->name = '刘大婶';
        $staff->age =36;
        $staff->phone=3243434455;
        //新增操作
        $staff->save();
        return '新增成功,id='.$staff->id;
    }
    //模型查询
    public function query()
    {
        //单条记录:get(主键/闭包)
        //闭包就是匿名回调函数,将函数作为参数进行传递
        //$sta = StaffModel::get(17);//查询可以返回一个对象
        //dump($sta);
        //echo $sta['name'],'<br/>';
        //echo $sta->age,'<br/>';

        //用闭包来创建查询条件
        $sta = StaffModel::get(function ($query){//$query必传,这是系统自动实例化过的对象
            $query->where('age','>','50')->where('sex',0);
        });
        dump($sta);
        //也可以直接用静态调用Db类的查询构造器进行查询
        //StaffModel  == Db::table('user')   在模型里面绑定了数据表的,所以这两种是相等的
        //第一个方法要静态调用,后面跟查询构造器一样写
        //$staff = StaffModel::where('age','<','50')->find();
        //dump($staff);
        //多条记录查询:all(主键列表\闭包)
        //返回值是多个数组/对象数组
        //$staff = StaffModel::all();
        //dump($staff);

        //用闭包来查询
        /*$staff = StaffModel::all(function ($query){
            $query->where('age','>','60');
        });*/
        /*dump($staff);*/
        echo '<hr>';
        //采用闭包来实现将请求变量注入到闭包条件中   来自url地址中的参数
        //$this->request ===new \think\facade\Request  请求对象来自controller控制器中,可以获取请求的变量
        $age = $this->request->param('age') ? : 40;
        $staff = StaffModel::all(function ($query) use ($age) {//闭包中引入变量
            $query->where('age','>',$age);
        });
        dump($staff);
    }
    //更新操作
    public function update()
    {
        //先查询在赋值最后保存
       /* $staff = StaffModel::get(11);
        $staff->phone = 11111111;//更新记录字段
        $staff->save();//将更新写回表中*/

       //静态方法更新
        StaffModel::update(
            ['phone'=>22222222],//要更新的字段
            ['id'=>11]//条件
        );
        //复杂更新,当条件比较多时,就要用闭包了
       /* StaffModel::update(
          ['age'=>\think\Db::raw('age+10')],
          function ($querty){
              $querty->where('age','>','60');
          }
        );*/
        //查询构造器来更新数据
        StaffModel::where('age','>','60')
            ->data(['age'=>\think\Db::raw('age-10')])
            ->update();

    }
    //新增数据
    public function create()
    {
        //1.save()   2.create(数据,字段)
        $data = ['name'=>'流星','age'=>90,'phone'=>9999999];
        //$field = ['name','age'];//允许插入的字段
        //StaffModel::create($data,$field);
        //用查询构造器来插入数据
        StaffModel::insert($data);
    }
    //模型的删除
    public function delete()
    {
        //destroy(主键/主键列表/闭包)
       // StaffModel::destroy([21,22,23]);

        //删除条件推荐使用闭包
        /*StaffModel::destroy(function ($query){
            $query->where('id','>',10);
        });*/

        //查询构造器实现删除
        StaffModel::where('id',17)
            ->delete();
        //工作上一般用软删除

    }
    //软删除   必须要在模型里面进行配置
    public function softDelete()
    {
        //StaffModel::destroy(19);
        //软删除的数据在普通查询中不可见

        //如果想在查询的时候看到已经被删除的记录
        $res = StaffModel::withTrashed()
            ->where('id','>',11)
            ->select();
        dump($res);
        //只看被软删除的数据
        $res = StaffModel::onlyTrashed()->select();
        dump($res);
    }

}


Correcting teacher:查无此人Correction time:2019-03-16 09:41:23
Teacher's summary:完成的不错。增删查改是对数据库的基本操作,要多练习,删除慎用。继续加油。

Release Notes

Popular Entries