博主信息
博文 8
粉丝 0
评论 0
访问量 7274
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
实例演示闭包实现查询 以及实现软删除功能并详细写出软删除的步骤-2018年5月24日
往昔流逝的博客
原创
769人浏览过

在控制器里的代码:

<?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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学