ThinkPHP6.0 鏈式SQL語句

来源:https://www.cnblogs.com/SJGJ/archive/2023/07/01/17519481.html
-Advertisement-
Play Games

## ThinkPHP6.0 鏈式SQL語句 #### 查詢單個數據 ```php $user = Db::query('select * from `user`'); $user=Db::table('user')->where('UserID',1001)->find();//查詢結果為空 返回 ...


ThinkPHP6.0 鏈式SQL語句

查詢單個數據

$user = Db::query('select * from `user`');
$user=Db::table('user')->where('UserID',1001)->find();//查詢結果為空 返回 null
$user=Db::table('user')->where('UserID',1001)->findOrEmpty();//查詢結果為空 返回 空數組

查詢結果集(查詢結果返回多條數據的意思)

$user=Db::table('user')->where('UserID',1001)->select();
$user=Db::table('user')->where('UserID', 1001)->select()->toArray();

查詢一個欄位

$user=Db::table('user')->where('UserID',1002)->value('UserName');//只能返回一條數據

查詢一列

        $user=Db::table('user')->where('Password',123456)->column('UserName');//可以返回多條數據

添加數據

        $data=['UserID'=>'1005','UserName'=>'Season','Password'=>'123456'];
        Db::name('user')->insert($data);

修改數據

        DB::table('user')->where('UserID',1005)->update(['Password'=>123]);

刪除數據

根據主鍵刪除

Db::table('user')->delete([1002,1003]);
條件刪除

    Db::table('user')->where('Password',123)->delete();

查詢數據

格式 where('欄位名','查詢表達式','查詢條件');
            $user=Db::table('user')->where("UserID","=",1001)->select();

模糊查詢

        $user=Db::table('user')->where('UserName','like','s%')->select();

區間查詢

        $user=Db::table('user')->where('UserID','between','1001,1003')->select();

IN查詢

        $user=Db::table('user')->where('UserID','in',[1001,1003])->select();

Not Null

        $user=Db::table('user')->where('Password','not null')->select();

Null

        $user=Db::table('user')->where('Password',null)->select();

鏈式操作示例

        $user=Db::table('user')->where('Password',123456)->order('UserName')->select();

field操作(輸出選擇的欄位名的數據)

        $user=Db::table('user')->field('UserID,UserName')->select();

鏈式alias操作,設置表的名稱(為了方便後面內容的書寫)

        $user=Db::table('user')->alias('a')->where('a.UserID',1001)->select();

limit 操作

        $user=Db::table('user')->limit(2)->select();

page操作

        $user=Db::table('user')->page(2,5)->select();

order操作,預設asc

        $user=Db::table('user')->order('UserID')->select();
        $user=Db::table('user')->order('UserID','desc')->select();

group 操作

        $user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->select();

having操作

$user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->having('u.Status>0')->select();

join操作

​ INNER JOIN: 等同於 JOIN(預設的JOIN類型),如果表中有至少一個匹配,則返回行

​ LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行

				     RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行

				       FULL JOIN: 只要其中一個表中存在匹配,就返回行

Transaction(自動):當函數內的sql語句出現錯誤了,則函數內的sql語句都不執行

Db::Transaction(function (){
    Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
    Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
});

startTrans(手動):當sql語句出現錯誤了,則sql語句都不執行

Db::startTrans();
try {
    Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
    Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);

    Db::commit();//提交事務
}catch (\Exception $e){
    echo '執行SQL失敗,開始回滾數據';
    Db::rollback();
}

獲取器:$value 所有欄位名是“UserName”的數據 $data所有數據

$user=Db::name('user')->withAttr('UserName',function ($value,$data){
    var_dump($value);
    var_dump($data);
})->select();;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 1.背景 在雲主機上寫了一個很簡單的html頁面,預期能通過IP+埠查看下頁面的樣子,但是發現訪問異常,(該主機效期足夠,綁過功能變數名稱,曾經http\s都正常)。 # 2.排查步驟 ## 2.1.安全組已開放埠 ![](https://cdn.yyxyy.top/img/202307012104 ...
  • # RDD的Transformation運算元 ## map map運算元的功能為做映射,即將原來的RDD中對應的每一個元素,應用外部傳入的函數進行運算,返回一個新的RDD ```Scala val rdd1: RDD[Int] = sc.parallelize(List(1,2,3,4,5,6,7,8 ...
  • ETL(是Extract-Transform-Load的縮寫,即數據抽取、轉換、裝載的過程),對於企業應用來說,我們經常會遇到各種數據的處理、轉換、遷移的場景。 今天特地給大家彙總了一些目前市面上比較常用的ETL數據遷移工具,希望對你會有所幫助。 ...
  • 本文以 `React`、`Vue` 為例,介紹下主流的渲染模式以及在主流框架中如何實現上述的渲染模式。 ## 前置知識介紹 看渲染模式之前我們先看下幾個主流框架所提供的相關能力,瞭解的可跳到下個章節。 ### 掛載組件到 DOM 節點 這是主流框架最基本的能力,就是將組件渲染到指定的 `DOM` 節 ...
  • 1. 設置請求頭 首先創建一個放置伺服器地址的js,如http.js,然後在http.js中引入axios `import axios from "axios";` 如果沒有axios,需要先安裝,npm i axios或者yarn add axois,然後重啟伺服器 ...直接上代碼 點擊查看代碼 ...
  • 不知不覺,《C++面試八股文》已經更新30篇了,這是我第一次寫技術博客,由於個人能力有限,出現了不少紕漏,在此向各位讀者小伙伴們致歉。 為了不誤導更多的小伙伴,以後會不定期的出勘誤文章,請各位小伙伴留意。 在《[C++面試八股文:C++中,設計一個類要註意哪些東西?](https://zhuanla ...
  • 前言 在併發編程中,我們經常會遇到多個goroutine同時操作一個map的情況。如果在這種情況下直接使用普通的map,那麼就可能會引發競態條件,造成數據不一致或者更嚴重的問題。 sync.Map是Go語言中內置的一種併發安全的map,但是他的實現和用法與普通的map完全不同,這篇文章將詳細介紹這些 ...
  • ## Thinkphp6 連接達夢資料庫 這裡使用 IDEA phpEnv PHP7.3 Thinkphp6 桌面操作系統:Windows11 虛擬機:VMware 伺服器操作系統:銀河麒麟 在虛擬機操作與windows無異 [參考資料](https://blog.csdn.net/chenxuan ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...