ThinkPHP5.0數據庫CURD的創建(Create)操作

使用查詢構造器進行查詢,起碼需要掌握查詢類的幾個關鍵的方法。這些方法對SQL稍微瞭解一點的用戶理解起來應該不難,find和select方法的區別在於find方法只是查詢一條記錄(即使滿足條件的記錄有很多),並且返回的是一個一維數組(沒有結果返回Null),而select方法返回的是一個二維數組(沒有結果返回空數組),除此之外,他們的查詢語法都是相同的。這些常用方法其實包含兩種大的類別,一個是輔助方法(輔助查詢用的,也稱為鏈式方法,例如table、field、where、order和limit等方法),一個是真正的查詢方法(find、select、insert、update和delete方法),查詢方法是必須的,而輔助方法是可選的,並且輔助方法必須在查詢方法之前被調用,並且在查詢調用之後自動失效。使用查詢構造器進行查詢,能夠最大程度的避免寫針對特定數據庫的查詢語句,減少跨數據庫類型的遷移成本。下面我們對數據庫的CURD操作給出基本的用法。創建操作指往數據表添加新的記錄,下面是示例代碼:

ThinkPHP5.0數據庫CURD的創建(Create)操作

insertAll方法的數據集中的元素請確保字段列表一致,否則會出錯。由於insert和insertAll方法最終都是調用連接類的execute方法,我們已經知道execute方法的返回值是影響的記錄數,所以insert和insertAll方法的返回值也是影響(新增)的記錄數,並不會返回主鍵值。主鍵id如果是自增類型,可以使用:

// 插入單個記錄

Db::table('data')

->insert(['name' => 'kancloud']);

如果需要獲取自增id的值,可以在insert方法之後緊接著調用getLastInsID方法:

// 插入單個記錄

Db::table('data')

->insert(['name' => 'kancloud']);

// 獲取上次寫入的自增Id

$id = Db::getLastInsID();

由於PDO內部的原因,insertAll方法後調用getLastInsID方法返回的自增Id可能存在偏差。或者直接合並上面的代碼為:

// 插入單個記錄 並返回自增Id

$id = Db::table('data')

->insertGetId(['name' => 'kancloud']);

對於不在數據表中的字段寫入,系統默認會拋出異常,但可以配合strict(false)方法忽略錯誤繼續執行,下面的test數據會被忽略(data表不存在test字段)。

// 插入單個記錄 並返回自增Id

$id = Db::table('data')

->strict(false)

->insertGetId([

'name' => 'kancloud',

'email' => '[email protected]',

'test' => '這個數據不會被寫入',

]);

你並不需要考慮寫入數據失敗的情況,數據庫操作過程有任何的錯誤都會拋出異常,你需要做的只是修正BUG或者捕獲異常自行處理。


分享到:


相關文章: