在任何查詢中可以使用fetchSql方法來獲取查詢的SQL而不是實際執行查詢,比較下面兩個查詢:
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性能更好。
閱讀更多 行家匯 的文章