Blogger Information
Blog 8
fans 0
comment 0
visits 5850
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实例演示闭包实现查询 以及实现软删除功能并详细写出软删除的步骤-2018年5月24日
往昔流逝的博客
Original
629 people have browsed it

在控制器里的代码:

<?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;
    
}













Correction status:Uncorrected

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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!