博客列表 >5.24 实例演示模型闭包实现查询及软删除功能

5.24 实例演示模型闭包实现查询及软删除功能

Allen的php博客
Allen的php博客原创
2018年05月26日 16:23:30539浏览

一、建立用户数据表

26161551.png

二、创建模型类与控制器

模型User.php:

model.png

控制器User.php

user.png

三、代码实例:

app/moder/User.php

<?php

namespace app\model;

use think\Model;

use think\model\concern\SoftDelete;


class User extends Model

{

//设置数据库的名称

protected $table = 'user';


//设置默认主键

protected $pk = 'id';


//软删除:1.复制SoftDelete类到当前模型;2.添加软删除deleteTime属性; 3.设置软删除默认字段值

use SoftDelete;

protected $delete_time = 'delete_time';

    protected $defaultSoftDelete = 0;


}

app/admin/controller/User.php

<?php

namespace app\admin\controller;

use think\Controller; //导入基类

use app\model\User as UserModel; //导入模型类

use think\Db; 


class User  extends Controller

{

//实例化模型,依赖注入

public function instance(UserModel $user)

{

// dump($user->getName()); //查看模型名称是否正确

$user->name = '湖锦涛';

$user->password = md5(12345);

$user->nickname = '湖起波涛';

$user->email = '13141223@qq.com';

$user->save();

return '添加数据成功!id='.$user->id;

}


//模型查询

public function query()

{

//用闭包查询单条数据

$res = UserModel::get(function($query){

$query->where('id','=',5);

});

echo '查询单条数据:<br>';

dump($res);

echo '<hr>';

//用构造器查询单条数据

$res1 = UserModel::where('id','=',5)->find();

echo '用构造器查询单条数据:<br>';

dump($res1);

echo '<hr>';


//用闭包,查询多条数据

$res = UserModel::all(function($query){

$query->where('id','>',5)->limit(3);

});

echo '查询多条数据:<br>';

dump($res);

echo '<hr>';

//用构造器,查询多条数据

$res1 = UserModel::where('id','>',5)

->limit(3)

->select();

echo '用构造器查询多条数据:<br>';

dump($res1);

echo '<hr>';


}


//模型更新

public function update()

{

//用闭包(数据,条件),更新数据

UserModel::update(

['nickname'=>'春哥'],

function($query){

$query->where('id','=',4);

}

);

return '用闭包,更新数据成功!<hr>';

//用构造器,更新数据

$data = [

'nickname'=>'信春哥就对了',

'uid'=> Db::raw('uid+1')

];

UserModel::where('id','=',4)

->data($data)

->update();

echo "string"; '用构造器,更新数据成功!';

}


//模型新增

public function create()

{

//1. 用create(数据,字段)添加数据

$data = [

'name' => '马朝旭',

'password' => md5(12345),

'nickname' => '骏马奔腾',

'email' => '71134423@qq.com'

];

$field = ['name','password','nickname','email'];

UserModel::create($data,$field);

return '用create(数据,字段),添加数据成!<hr>';


//2. 用构造器添加数据

$data1 = [

'name' => '梁咏琪',

'password' => md5(12345),

'nickname' => '粱中宝玉',

'email' => '1322423@qq.com'

];

UserModel::insert($data1);

}


//模型删除

public function delete()

{

//用闭包,软删除数据

UserModel::destroy(function($query){

$query->where('id','>',0)->where('id','<',5);

});


//用构造器,软删除数据

UserModel::where('id','=',5)->delete();


//查询被软删除的数据

$res = UserModel::withTrashed()->select();

$res = UserModel::onlyTrashed()->select();

$res = UserModel::all();

dump($res);


//恢复单条,被软删除的数据

$res = UserModel::onlyTrashed()->find(2);

$res->restore();

// 恢复多条,被软删除的数据

$res = UserModel::update(

['delete_time'=>0],

function($query){

$query->where('id','>',0);

}

);


$res = UserModel::all();

dump($res);

}


}

以上代码均经过测试,代码可用

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