Blogger Information
Blog 46
fans 3
comment 1
visits 33428
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
5.24数据库的模型操作,软删除与恢复
吃不起土的少年的博客
Original
926 people have browsed it

实例

<?php
namespace app\index\Controller;
use think\Controller;
use app\index\model\Staff as StaffModel;

class staff extends Controller
{
  //新增
  public function instance(staffModel $staff)
  {
    $staff->name ='詹姆斯';
    $staff->sex =0;
    $staff->age =35;
    $staff->salary =12538;
    $staff->save();
    return '新增成功,id='.$staff->staff_id;

  }

  public function query()
  {
    // 单条记录查询
    $staff =StaffModel::get(15);
    dump($staff);
echo '<hr>';
    //用闭包方式查询条件复杂的记录
    $staff =StaffModel::get(function($query){
      $query->where('sex','=',1)->where('salary','<',10000);
    });

    dump($staff);
echo '<hr>';
    //多条记录查询
    $staffs= StaffModel::all();
    dump($staffs);

    echo '<hr>';
    //返回主键为6 11 ,14的数据
    $staffs =StaffModel::all([6,11,14]);
    dump($staffs);
  echo '<hr>';
  //all()也支持闭包查询
 $staffs=StaffModel::all(function ($query){
   $query->where('age','>',50)->where('salary','>',5000);
 });
    dump($staffs);

    echo'<hr>';
    //all()返回的数组 同时也可以用foreach来进行遍历

    foreach ($staffs as $key ) {
      echo'姓名:'.$key->name.'<br>';
        echo'性别:'.$key->sex.'<br>';
          echo'工资:'.$key->salary.'元'.'<hr style="color:red">';
    }
echo "<hr>";
    //使用闭包查询 同时支持查询变量从外部传入
    //例如 查询条件由用户通过URL提供
    $sex =$this->request->param('sex')?:0;
    $salary =$this->request->param('salary')?:2938;

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

    foreach ($staffs as $key ) {
      echo'姓名:'.$key->name.'<br>';
        echo'性别:'.$key->sex.'<br>';
          echo'工资:'.$key->salary.'元'.'<hr style="color:red">';
    }

  }

  //模型更新
  public function update()
  {
    //更新基于查询
    $staff=StaffModel::get(14);
    $staff->name='kim';
    $staff->save();
    //使用静态方法来更新数据
    StaffModel::update(
      ['name'=>'杰克'],
      ['staff_id'=>'14']
    );
    StaffModel::update(
      ['salary'=>\think\Db::raw('salary+1000')],
      function($query){
        $query->where('age','<',30);}

      );
      //也可以用查询构造器来更新数据
      StaffModel::where('age','>',50)
                 ->data(['salary'=> \think\Db::raw('salary+500')])
                 ->update();
  }
  //模型 添加数据
  public function create()
  {
    $data =[
      'name'=>'约翰逊',
      'sex'=>1,
      'age'=>24,
      'salary'=>6871
    ];

    $field=['name','sex','age','salary'];

  //   StaffModel::create($data,$field);
  // //使用查询构造器添加


  }
//删除操作
  public function delete()
  {
    StaffModel::destroy(14);
    StaffModel::destroy([14,15,18]);//支持多键
    //闭包查询 删除
    StaffModel::destroy(function ($query){
      $query->where('age','=',58)->where('salary','>',15000);
    })  ;

    //用查询构造器 删除
    StaffModel::where('age','<',10)
                 ->delete();
  }

  public function softDelete()
  {
    StaffModel::destroy(14);
   //被删除的记录 无法通过普通方法查到
    $staff=StaffModel::where('staff_id','=',14)->select();
    //查询被软删除的数据
    $staff=StaffModel::withTrashed()->where('staff_id','=',14)->select();

    //从回收站查询并恢复软删除数据
    $staff =StaffModel::onlyTrashed()->where('staff_id','=',14)->find();
    $staff->restore();
    $staff=StaffModel::where('staff_id','=',14)->select();
    dump($staff);
  }
}
 ?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

软删除的步骤

  1. 在模型中导入model/concern/SoftDelete 以导入其中的trait方法集

  2. 在数据表中新增delete_time字段(可自行定义,与之相匹配即可)

  3. 在相应模型中设置模型属性 protected $deleteTime = '删除时间字段名';

  4. 在类中调用softDelete;

  5. 在控制器中创建同名方法 即可使用。

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post