作业提交:软删除恢复,执行代码如下
StaffModel::onlyTrashed()->find(19)->restore();
SQL结果:将ID记录为19的软删除了的记录找到,然后update设置的软字段,将值更新为设置的值(0)。
//[ SQL ] SELECT * FROM `about` WHERE ( `id` = 19 ) AND `about`.`delete_time` <> '0' LIMIT 1
//[ SQL ] UPDATE `about` SET `delete_time` = 0 WHERE ( `id` = 19 ) AND `delete_time` <> 0
以下内容为学习心得及部分代码
一、创建模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | namespace app\index\model;
use think\Model;
use think\model\concern\SoftDelete;
class Staff extends Model
{
use SoftDelete;
protected $table = 'about' ;
protected $pk = 'id' ;
protected $deleteTime = 'delete_time' ;
protected $defaultSoftDelete =0;
}
|
二、模型的引入及实例化
1 2 3 4 5 6 7 8 9 10 11 12 | namespace app\index\controller;
use think\Controller;
use app\index\model\Staff as StaffModel;
use think\Db;
use think\model\concern\SoftDelete;
class Staff extends Controller
{
}
|
三、模型的各类操作函数
3.1添加数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public function create()
{
$data =[
'orderid' =>3,
'namecn' => '静态方法添加' ,
'introctioncn' => '允许添加的字段,才能添加进去,这个不添加'
];
$filed =[ 'namecn' , 'orderid' ];
StaffModel::create( $data , $filed );
StaffModel::insert( $data );
}
|
3.2 查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public function query()
{
$staff =StaffModel::get(33);
dump( $staff );
\var_dump( $staff );
echo $staff [ 'namecn' ]. '<Br>' ;
echo $staff ->namecn;
$staff =StaffModel::get( function ( $query ){
$query ->where( 'orderid' ,3)->where( 'id' , '>' ,10);
});
StaffModel::where( 'orderid' ,3)
->where( 'id' , '>' ,10)
->find();
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public function queryall()
{
$this ->request;
$id = $this ->request->param( 'id' ) ?: 30;
$orderid = $this ->request->param( 'orderid' ) ?: 3;
$staffs =StaffModel::all( function ( $query ) use ( $id , $orderid ){
$query ->where( 'id' , '<' , $id )->where( 'orderid' , '=' , $orderid );
});
foreach ( $staffs as $v ){
echo 'id:' . $v ->id. '<br>' ;
echo '标题:' . $v ->namecn. '<hr>' ;
};
}
|
3.3 更新
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public function update()
{
$staff =StaffModel::get(32);
$staff ->namecn= 'update更新' ;
$staff ->save();
StaffModel::update(
[ 'namecn' => '静态方法更新' ],
[ 'id' =>32]
);
StaffModel::update(
[ 'orderid' => \think\Db::raw( 'orderid+5' )],
function ( $query ){
$query ->where ( 'orderid' , '>' ,3);
}
);
StaffModel::where( 'orderid' , '>' ,5)
->data([ 'orderid' => \think\Db::raw( 'orderid+5' )])
->Update();
}
|
3.4 删除(直接从数据表中删除了记录)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public function delete ()
{
StaffModel::destroy(17);
StaffModel::destroy([31,34]);
StaffModel::destroy( function ( $query ){
$query ->where( 'id' , '<' ,30)->where( 'orderid' , '=' ,10);
});
StaffModel::where( 'id' , '=' ,21)-> delete ();
}
|
3.5 软删除(用更新来模拟删除,需在模型中进行配置)
/*
* 软删除的步骤
* 1、在表中添加一个字段,删除时间(删除标志):delete_time
* 2、在模型类添加一个属性:$deleteTime='delete_time'
* 3、在模型中导入软删除的trait类库:SoftDelete
* 4、最新版支持设置软删除的默认字段值 think\model\concern\;
*
* */
1 2 3 4 5 6 7 8 9 10 11 12 | use think\model\concern\SoftDelete;
class Staff extends Model
{
use SoftDelete;
protected $deleteTime = 'delete_time' ;
protected $defaultSoftDelete =0;
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public function softDelete()
{
StaffModel::destroy([18,19]);
$res = StaffModel::where( 'id < 30' )->select();
$res = StaffModel::withTrashed()->where( 'id<30' )->select();
$res = StaffModel::onlyTrashed()->select();
StaffModel::onlyTrashed()->find(19)->restore();
}
|