中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Thinkphp5.0框架如何使用模型Model的獲取器、修改器、軟刪除數據

Thinkphp5.0框架如何使用模型Model的獲取器、修改器、軟刪除數據

發布時間:2021-05-19 13:53:58 來源:億速云 閱讀:165 作者:小新 欄目:開發技術

這篇文章主要介紹Thinkphp5.0框架如何使用模型Model的獲取器、修改器、軟刪除數據,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

具體如下:

一、獲取器

在model中使用 get+字段名+Attr,可以修改字段的返回值。

數據庫中性別保存為,0未知、1男、2女,查詢時返回漢字:

model:

//將性別的012修改為未知、男。女返回
public function getSexAttr($val){
    switch($val){
      case '1' :
        return '男';
      case '2':
        return '女';
      default:
        return '未知';
    }
}
//格式化時間戳后返回
public function getAddtimeAttr($val){
    if($val){
      return date('Y-m-d H:i:s',$val);
    }else{
      return $val;
    }
}

controller:

$res = TestUser::get(2);
dump($res->toArray());//性別會被model轉化
dump($res->getData());//返回原始數據

二、模型修改器:

在model中使用 set+字段名+Attr,可以修改字段值,方便添加數據時使用。

示例,比如密碼需要MD5加密:

model:

//對密碼字段加密之后存儲
//第一個參數是密碼
//第二個參數是添加的數據,可選
public function setPasswordAttr($val,$data){
    if($val === '') {
      return $val;
    }else{
      return md5($val.$data['email']);
    }
}

三、自動完成:

model:

//添加和修改時,都會自動完成的字段
protected $auto = ['addtime'];
public function setAddtimeAttr(){
    return time();
}

三、添加數據時,自動完成:

model:

protected $insert = ['addtime'];
public function setAddtimeAttr(){
    return time();
}

四、修改數據時,自動完成:

model:

protected $update = ['addtime'];
public function setAddtimeAttr(){
    return time();
}

五、自動完成時間戳

在數據庫配置文件database.php中,有一項:

// 自動寫入時間戳字段
'auto_timestamp' => false,

如果開啟,則會自動完成所有表的時間戳,但是不建議這樣,只在需要的地方設置更安全。

例如對用戶表的時間戳自動完成,就在User的model中設置:

<?php
namespace app\index\model;
use think\Model;
class User extends Model{
  //開啟自動完成時間戳功能
  protected $autoWriteTimestamp = true;
  //開啟后,
  //添加數據時,默認自動完成的字段是:create_time和update_time。
  //修改數據時,默認自動完成的字段是:update_time。
  //如果數據庫不是這兩個字段,則會報錯
  //如果不想用這兩個字段,可以進行如下修改
  protected $createTime = 'addtime';//修改默認的添加時間字段
  protected $updateTime = 'updtime';//修改默認的修改時間字段
   protected $updateTime = false;//當不需要這個字段時設置為false
}

六、軟刪除

軟刪除:當刪除條記錄時,有時我們需要假刪除,只通過修改某個字段狀態來標記記錄已刪除。

model:

<?php
namespace app\index\model;
use think\Model;
use traits\model\SoftDelete;//引入軟刪除的類
class User extends Model{
  //使用軟刪除
  //刪除時,默認更新的字段是delete_time
  use SoftDelete;
  //如果修改修改默認的字段名字
  protected $deleteTime = 'deltime';
}

控制器:

$res = User::destroy(1);//軟刪除
//返回影響的行數
dump($res);

執行刪除后,就會更新delete_time字段,如果update_time字段也開啟了自動完成,也會更新update_time字段。

//獲取所有數據,會過濾掉delete_time不為null的記錄(即軟刪除的記錄不會顯示)
//注意,delete_time字段默認值要設置為null,不能設置為0,否則0頁會被視為軟刪除過的數據
$res = $model->select();
//如果需要獲取包含軟刪除的數據,使用withTrashed(true)。
$res = User::withTrashed(true)->select();
//如果需要獲取軟刪除過的數據
$res = User::onlyTrashed()->select();
//刪除id是15的記錄,如果開啟軟刪除,會進行假刪除
$res = User::destroy(15);
//如果開啟了軟刪除,需要真正地刪除數據,不做軟刪除
//destory()第二個參數傳遞true
$res = User::destroy(15,true);
//delete()參數傳遞true
$userData = User::get(15);
$userData->delete(true);

以上是“Thinkphp5.0框架如何使用模型Model的獲取器、修改器、軟刪除數據”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

芜湖县| 石台县| 唐山市| 绥芬河市| 温州市| 罗田县| 广州市| 新干县| 高碑店市| 甘谷县| 安泽县| 留坝县| 同江市| 龙门县| 商南县| 苗栗市| 大庆市| 金山区| 洪泽县| 新宁县| 安阳市| 孝感市| 上高县| 林甸县| 繁昌县| 江油市| 横山县| 汪清县| 怀安县| 宜阳县| 梨树县| 绩溪县| 客服| 阿拉善盟| 庆城县| 荣成市| 永靖县| 嵊州市| 台北县| 丹阳市| 郁南县|