ThinkPHP5.0獲取查詢SQL和返回PDOStatement對象

在任何查詢中可以使用fetchSql方法來獲取查詢的SQL而不是實際執行查詢,比較下面兩個查詢:

ThinkPHP5.0獲取查詢SQL和返回PDOStatement對象

fetchSql是一個特殊的鏈式查詢方法,只接受一個布爾值參數,表示是否獲取sql語句,為true(默認為true)的時候表示當前的查詢不會實際執行,而只會返回最終組裝的SQL語句。在個別需要查看運行錯誤調試的情況下有所幫助。

返回PDOStatement對象。如果需要進行一些特殊的查詢,並且需要利用PDO的一些查詢特性,可以使用fetchPdo方法來返回PDOStatement對象而不是數據,以便進行下一步操作,下面是一個示例代碼:

$pdo = Db::table('user')

->fetchPdo(true)

->field('name')

->where('id', 1)

->select();

$result = $pdo->fetchColumn();

使用了fetchPdo方法後無論是select還是find方法都是等效的,最終都只是返回PDOStatement對象,然後自己進行查詢。無論是否有符合條件的數據,始終返回PDOStatement對象,然後可以調用PDOStatement對象的所有方法和屬性。

V5.0.5+版本開始,查詢類新增了getPdo方法直接返回PDOStatement對象,上面的代碼可以改為:

$pdo = Db::table('user')

->where('id', 1)

->field('name')

->getPdo();

$result = $pdo->fetchColumn();

由於單獨封裝的原因,getPdo方法比使用fetchPdo性能更好。


分享到:


相關文章: