最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Thinkphp5.0框架使用模型Model的獲取器、修改器、軟刪除數(shù)據(jù)操作示例

 更新時(shí)間:2019年10月11日 10:27:44   作者:學(xué)知無涯  
這篇文章主要介紹了Thinkphp5.0框架使用模型Model的獲取器、修改器、軟刪除數(shù)據(jù)操作,結(jié)合實(shí)例形式分析了thinkPHP5.0模型Model獲取器、修改器數(shù)據(jù)操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Thinkphp5.0框架使用模型Model的獲取器、修改器、軟刪除數(shù)據(jù)操作。分享給大家供大家參考,具體如下:

一、獲取器

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

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

model:

//將性別的012修改為未知、男。女返回
public function getSexAttr($val){
    switch($val){
      case '1' :
        return '男';
      case '2':
        return '女';
      default:
        return '未知';
    }
}
//格式化時(shí)間戳后返回
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());//性別會(huì)被model轉(zhuǎn)化
dump($res->getData());//返回原始數(shù)據(jù)

二、模型修改器:

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

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

model:

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

三、自動(dòng)完成:

model:

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

三、添加數(shù)據(jù)時(shí),自動(dòng)完成:

model:

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

四、修改數(shù)據(jù)時(shí),自動(dòng)完成:

model:

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

五、自動(dòng)完成時(shí)間戳

在數(shù)據(jù)庫配置文件database.php中,有一項(xiàng):

// 自動(dòng)寫入時(shí)間戳字段
'auto_timestamp' => false,

如果開啟,則會(huì)自動(dòng)完成所有表的時(shí)間戳,但是不建議這樣,只在需要的地方設(shè)置更安全。

例如對用戶表的時(shí)間戳自動(dòng)完成,就在User的model中設(shè)置:

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

六、軟刪除

軟刪除:當(dāng)刪除條記錄時(shí),有時(shí)我們需要假刪除,只通過修改某個(gè)字段狀態(tài)來標(biāo)記記錄已刪除。

model:

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

控制器:

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

執(zhí)行刪除后,就會(huì)更新delete_time字段,如果update_time字段也開啟了自動(dòng)完成,也會(huì)更新update_time字段。

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

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • WordPress主題中添加文章列表頁頁碼導(dǎo)航的PHP代碼實(shí)例

    WordPress主題中添加文章列表頁頁碼導(dǎo)航的PHP代碼實(shí)例

    這篇文章主要介紹了WordPress主題中添加文章列表頁碼導(dǎo)航的PHP代碼實(shí)例,這也是制作各種WordPress主題必備的基礎(chǔ)功能,需要的朋友可以參考下
    2015-12-12
  • 詳解PHP中如何執(zhí)行系統(tǒng)命令

    詳解PHP中如何執(zhí)行系統(tǒng)命令

    這篇文章主要為大家介紹了PHP中如何執(zhí)行系統(tǒng)命令示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Smarty模板簡單配置與使用方法示例

    Smarty模板簡單配置與使用方法示例

    這篇文章主要介紹了Smarty模板簡單配置與使用方法,涉及Smarty模板的基本配置與緩存文件的相關(guān)使用技巧,需要的朋友可以參考下
    2016-05-05
  • composer安裝的方法步驟(圖文)

    composer安裝的方法步驟(圖文)

    這篇文章主要介紹了composer安裝的方法步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Nginx下ThinkPHP5的配置方法詳解

    Nginx下ThinkPHP5的配置方法詳解

    今天有個(gè)朋友詢問tp5支持pathinfo的nginx配置怎么寫的問題,所以想著自己總結(jié)分享下,下面這篇文章主要給大家介紹了關(guān)于在Nginx下ThinkPHP5的配置方法,需要的朋友可以參考借鑒,下面話不多說,來一起看看吧。
    2017-08-08
  • ThinkPHP5.1表單令牌Token失效問題的解決

    ThinkPHP5.1表單令牌Token失效問題的解決

    這篇文章主要給大家介紹了關(guān)于ThinkPHP5.1表單令牌Token失效問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ThinkPHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Yii2增加驗(yàn)證碼步驟詳解

    Yii2增加驗(yàn)證碼步驟詳解

    這篇文章主要介紹了Yii2增加驗(yàn)證碼步驟詳解的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • 自定義min版smarty模板引擎MinSmarty.class.php文件及用法

    自定義min版smarty模板引擎MinSmarty.class.php文件及用法

    這篇文章主要介紹了自定義min版smarty模板引擎MinSmarty.class.php文件及用法,可實(shí)現(xiàn)簡單的Smarty模板變量替換與輸出顯示等功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • thinkphp3.2.2前后臺(tái)公用類架構(gòu)問題分析

    thinkphp3.2.2前后臺(tái)公用類架構(gòu)問題分析

    這篇文章主要介紹了thinkphp3.2.2前后臺(tái)公用類架構(gòu)問題,以實(shí)例形式較為詳細(xì)的分析了前后臺(tái)公用類的簡單調(diào)用方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • Laravel框架路由配置總結(jié)、設(shè)置技巧大全

    Laravel框架路由配置總結(jié)、設(shè)置技巧大全

    這篇文章主要介紹了Laravel框架路由配置總結(jié)、設(shè)置技巧大全,Laravel 中最簡單的路由由一個(gè)URI和一個(gè)閉包調(diào)用組成,需要的朋友可以參考下
    2014-09-09

最新評論

雷州市| 安溪县| 吴堡县| 巩义市| 公主岭市| 昌黎县| 衡东县| 望城县| 靖江市| 龙海市| 永吉县| 福清市| 蒙阴县| 遂昌县| 临安市| 日土县| 泸定县| 昌吉市| 泊头市| 象州县| 穆棱市| 宜昌市| 台东县| 平陆县| 自治县| 普安县| 长泰县| 包头市| 民丰县| 高清| 青铜峡市| 德钦县| 敦煌市| 丰县| 泉州市| 博乐市| 南阳市| 岫岩| 曲周县| 磐石市| 潜山县|