创建模型 进行增删改查 软删除

Original 2019-06-08 00:22:26 261
abstract:<?Phpnamespace app\index\model;use think\model\concern\SoftDelete;use think\Model;class Staff extends Model{ use SoftDelete; //设置数据表的名称 protected $table = 'my_sjb'; //设置

<?Php

namespace app\index\model;
use think\model\concern\SoftDelete;
use think\Model;

class Staff extends Model
{
 use SoftDelete;
 //设置数据表的名称
 protected $table = 'my_sjb';
 //设置主键:默认为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; //导入模型 设置模型别名 防止冲突

class Staff extends Controller
{
 //实例化模型
 //public function instance()
 public function instance(StaffModel $staff) //依赖注入
 {
  //$staff = new StaffModel(); //模型实例化
  dump($staff->getname());//查询模型名称


  //新增一条记录
  $staff->name = 'yang';
  $staff->sex = 0;
  $staff->age = 30;
  $staff->salary = 12000;

  //新增操作
  $staff->save();
  return '新增成功,id='.$staff->id;
 }
 //模型查询
 public function query()
 {
  //1.查询单挑记录 get(主键/闭包)
  // $staff = StaffModel::get(18);
  // dump($staff);
  // echo $staff['name'],'<br/>';
  // echo $staff->name,'<br/>';

  //用闭包来创建查询条件
  // $staff = StaffModel::get(function($query){
  //  $query->where('sex',0)->where('salary','>',8000);
  // });
  // dump($staff);

  //直接静态调用Db类的查询构造器进行查询
  // StaffModel::where('sex',0)
  // ->where('salary','>',8000)
  // ->find();
  // dump($staff);

  //2.多条记录的查询all
  //$staffs = StaffModel::all();//不传参查询所有
  //$staffs = StaffModel::all([18,19,20]);
  // $staffs = StaffModel::all(function($query){
  //  $query->where('age','<',40)->where('salary','>',3000);
  // });
  //dump($staffs);

  // foreach ($staffs as $staff){
  //  echo '编号:'.$staff->id.'<br/>';
  //  echo '姓名:'.$staff->name.'<br/>';
  //  echo '年龄:'.$staff->age.'<br/>';
  //  echo '性别:'.$staff->sex.'<br/>';
  //  echo '工资:'.$staff->salary.'<hr/>';
  // }

  //使用闭包来实现将请求变量注入到闭包条件中
  $age = $this->request->param('age')?:40;
  $salary = $this->request->param('salary')?:3000;

  $staffs = StaffModel::all(function($query) use ($age,$salary){
   $query->where('age','<',$age)->where('salary','>',$salary);
  });
  dump($staffs);

 }

 //模型的更新 必须基于查询 不允许无条件
    public function update()
    {
     // $staff = StaffModel::get(18);
     // $staff->name = '大胡子';
     // $staff->save();

        //支持静态方法更新
     // StaffModel::update(
     //  ['name'=>'张飞'],
     //  ['id'=> 18]
     // ); 

     //复杂更新
     //    StaffModel::update(
     //  ['salary'=>\think\Db::raw('salary+500')],
     //  function($query){
     //   $query->where('age','>',50);
     //  }
     // ); 

     //查询构造器更新
     StaffModel::where('age','>=',50)
         ->data(['salary'=>\think\Db::raw('salary+500')])
         ->update();
    }

    //添加数据
    public function create()
    {
     $data = [
      'name'=>'唐十一',
      'age'=>28,
      'sex'=>0,
      'salary'=>6500
     ];
     //$field = ['name','age'];
     //StaffModel::create($data,$field);

     //查询构造器查询数据
     StaffModel::insert($data);

    }

    //模型删除
    public function delete()
    {
     //destroy 主键删除
     //StaffModel::destroy(30);([1,2,3])//支持数组
     //删除条件推荐使用闭包
     StaffModel::destroy(function($query){
      $query->where('age','>',50)->where('salary','>',5000);
     });

     //查询构造器实现
     StaffModel::where('age','>=',50)
         ->where('salary','>',5000)
         ->delete();
    }

    //软删除:
    public function SoftDelete()
    {
     StaffModel::destroy(18);
     //软删除在普通查询中不可见
     //$res = StaffModel::where('id','<=',20)->select();
     //想看见被删除的数据
     //$res = StaffModel::withTrashed()->where('id','<=',20)->select();
     //只查看回收站数据
     $res = StaffModel::onlyTrashed()->select();
     dump($res);
    }
}


Correcting teacher:查无此人Correction time:2019-06-10 09:48:12
Teacher's summary:完成的不错。数据都要保存下来,所以才使用软删除。继续加油。

Release Notes

Popular Entries