博客列表 >实例演示闭包实现查询 以及实现软删除功能并详细写出软删除的步骤-2018年5月24日

实例演示闭包实现查询 以及实现软删除功能并详细写出软删除的步骤-2018年5月24日

往昔流逝的博客
往昔流逝的博客原创
2018年05月29日 16:51:08628浏览

在控制器里的代码:

<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\Users as UsersModel; //设置别名,防止与当前控制器冲突
class Users extends Controller
{
    // public function show()
    public function instance(UsersModel $users) //依赖注入
    {
        // $users = new UsersModel();
        // dump($users->getName()); //模型名称
        
        //新增一条记录
        $users->name = 'Line';
        $users->sex = 0;
        $users->age = 18;
        
        $users->save();
        return '新增成功,id='.$users->Users_id;
        
        //实际工作中,我们几乎全部采用模型的静态方法调用来实现数据操作
    }

    //模型查询
    public function query()
    {
        //1.单条记录:静态get(主键/闭包)方法
        //闭包就是一个匿名回调函数
        //此时完成了二个操作:1.创建模型对象 2. 模型对象初始化(赋值)
        $users = UsersModel::get(2);  //以静态查询方式创建模型对象

        //如果查询条件复杂可以使用闭包方式创建查询条件
        $users = UsersModel::get(function($query){
            $query->where('sex',0)->where('name','Line');
        });
        dump($users);
        echo '<hr>';


        //2.多条记录查询: all(主键列表/闭包)
        //返回值是一个多维数组/对象数组
        //all()也支持闭包查询,这也是我们以后常用的方式
        $userss = UsersModel::all(function($query){
            $query->where('age','<=',40)->where('salary','>',3000);
        });
        dump($userss);
        echo '<hr>';

        //all()返回的数组,我们一般是采用循环的方式进行遍历
        foreach ($userss as $users) {
            echo '姓名:'.$users->name.'<br>';
            echo '年龄:'.$users->age.'<br>';
        }

        
    }

    
    //软删除:必须在模型中进行先行配置
    public function softDelete()
    {
        // UsersModel::destroy(1);
        //生成的SQL语句不是删除,而是更新:
        //UPDATE `Users` SET `delete_time` = 1527148290 WHERE `Users_id` = 1
        
        //软删除记录不会出现在查询结果中
        $res = UsersModel::where('Users_id < 5')->select();

        //如果想让查询结果包括已经软删除的记录
        $res = UsersModel::withTrashed()->where('Users_id<5')->select();

        //如果只想查询已经被软删除的数据(回收站)
        $res = UsersModel::onlyTrashed()->select();

        dump($res);

    }

}
在模型里的代码:

<?php

namespace app\index\model;

/**
 * 实现软删除功能的步骤
 * 1.在数据表中新增delete_time字段(字段名可自定义)
 * 2.在模型中导入trait类:SoftDelete
 * 3.设置模型属性 protected $deleteTime = '删除时间字段名';
 * 4.设置软删除字段默认值[可选]
 */


use think\Model;
//使用软删除功能,必须先导入model/concern/SoftDelete.php
use think\model\concern\SoftDelete;    //实际上一个trait方法集
class Users extends Model
{
    use SoftDelete;

    //设置数据表名
    protected $table = 'Users';

    //设置主键
    protected $pk = 'Users_id';

    //设置删除时间字段,配合软删除功能
    protected $deleteTime = 'delete_time';

    //设置软删除字段的默认值
    protected $defaultSoftDelete = 0;
    
}













声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议