thinkPHP5.0模型實現軟刪除


Login.php

<?php

namespace app\index\controller;

use think\Controller;
use Gregwar\Captcha\CaptchaBuilder;
use think\Loader;
use app\index\model\Data;
use think\Db;

class Login extends Controller
{
public function _initialize()
{
//parent::__construct();
$this->data = Loader::model('data');
}

public function delData()
{
//刪除id=16的記錄
$res = Data::destroy(16);
//返回int(1)受影響記錄數量
dump($res);
}

//刪除后進行查詢驗證
public function selData()
{
//返回為null,表示刪除成功
//dump(Data::get(16));
$res = Data::select();
foreach ($res as $k => $v) {
//getData()函數可以獲取對象里面的數據
dump($v->getData());
}
}

//默認情況下,查詢到的數據不包含軟刪除數據,如果需要包含軟刪除的數據
public function selData1()
{
//查詢單條數據
$res = Data::withTrashed(true)->find();
dump($res->getData());

//查詢多條數據
$res = Data::withTrashed(true)->select();
foreach ($res as $k => $v) {
dump($v->getData());
}
}

//如果只想刪除軟刪除的數據,相當於查看回收站
public function selData2()
{
//單條數據
$res = Data::onlyTrashed(true)->find();
dump($res->getData());
//多條數據
$res = Data::onlyTrashed(true)->select();
foreach ($res as $key => $val) {
dump($val->getData());
}
}

//恢復軟刪除記錄
//控制器中將被軟刪除的delete_time更新為null即可
public function selData3()
{
$res = Data::update([
'delete_time' => null,
], ['id' => 16]);
dump($res);

//現在就可以獲取重新被軟刪除的記錄了
$res = Data::get(16);
dump($res->getData());
}

//物理刪除是指徹底將該記錄從表中移除,不可恢復。給destroy()方法傳入第二個參數true
public function delReal()
{
//刪除id為16的記錄
$res = Data::destroy(16, true);
dump($res);

//使用delete(true)實現物理刪除
$res = Data::where('id', 18)->delete();
dump($res);
}
}
 
Data.php
<?php

namespace app\index\model;

use think\Db;
use think\Model;
use traits\model\SoftDelete;

class Data extends Model
{
//在當前類導入,就可以使用其中的方法啦
use SoftDelete;
//如果你的字段名為框架默認的delete_time,可省略
protected $deleteTime = 'delete_time';
protected $table = 'bbs_data';

public function getMenu()
{
$res = Db::name($this->table)->select();

return $res;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM