您現在的位置是:首頁 > 棋牌

ThinkPHP5.0資料庫CURD的刪除(Delete)操作和使用鏈式方法

  • 由 億仁網 發表于 棋牌
  • 2022-06-06
簡介正因為鏈式操作方法返回的是當前物件例項,所以不同的鏈式方法在呼叫的順序上沒有先後的概念,但相同的鏈式方法呼叫順序會影響最終的查詢,下面的兩個例子完全等效:上面兩個查詢最終生成的SQL語句是完全相同的

資料庫怎麼刪除主鍵

刪除操作指對資料表的單個記錄或者多個記錄的刪除操作,示例程式碼如下:

// 刪除資料

Db::name(‘data’)

->where(‘id’, 18)

->delete();

和更新操作一樣,ThinkPHP不允許使用無條件刪除操作,如果不帶條件可以直接使用主鍵刪除:

// 刪除資料

Db::name(‘data’)

->delete(18);

// 刪除多條資料

Db::name(‘data’)

->delete([1, 5, 8]);

如果你確定要執行無條件刪除操作, 可以使用下面的方式:

// 刪除所有資料

Db::name(‘data’)

->delete(true);

事實上,對於業務資料表,基本上不建議使用刪除操作,而是使用軟刪除(邏輯刪除,其實執行的是資料表的更新操作)替代實際的物理刪除。

掌握了基本的CURD操作後,我們就來熟悉下鏈式方法的概念,其實就是前面我們提到的輔助查詢方法。首先鏈式方法的目的是為了讓查詢更清晰和直觀,下面的兩個程式碼實現哪個更清晰易懂大家可以比較下。

ThinkPHP5.0資料庫CURD的刪除(Delete)操作和使用鏈式方法

事實上,我們前面使用的table、where、limit之類的方法都稱之為鏈式方法,辨別一個方法是否屬於鏈式方法的一個顯著特徵就是看這個方法是否返回當前的物件例項。正因為鏈式操作方法返回的是當前物件例項,所以不同的鏈式方法在呼叫的順序上沒有先後的概念,但相同的鏈式方法呼叫順序會影響最終的查詢,下面的兩個例子完全等效:

ThinkPHP5.0資料庫CURD的刪除(Delete)操作和使用鏈式方法

上面兩個查詢最終生成的SQL語句是完全相同的。但下面兩個查詢最終生成的SQL是不同的

ThinkPHP5.0資料庫CURD的刪除(Delete)操作和使用鏈式方法

多個where方法和order方法的呼叫順序最終影響了生成的SQL語句,雖然有時候並不會影響查詢結果。上面的兩個例子where方法的順序並不會影響查詢條件,而order方法的順序則改變了最終資料的排序。鏈式方法的呼叫順序取決於你的思維習慣或者說團隊規範。

Top