ThinkPHP中CURD where的使用注意事項
這幾天寫的thinkphp程式中,使用where進行連貫操作的時候總是編譯不出來自己想要的sql,於是仔細地鑽研了一下,發現原來thinkphp是這麼編譯where的:
thinkphp中,where中的引數,可以是string,也可以是array,並且可以進行連貫操作,例如
$model->where("id=8")->where("name='yelbosh'")->where(array('grade'=>'高一'))->where(array('class'=>'二班'));
我們肯定期望的是編譯出來的sql如下:
where id=8 and name='yelbosh' and grade='高一' and class='二班'
但是通過$model->getLastSql() echo出來的卻是 name='yelbosh' and grade='高一' and class='二班'
原理其實很簡單,thinkphp只會加一個string類的where至編譯部分,並且分析順序和sql一樣,從右到左,把第一個string類的where作為編譯的where
而那些array型別的where,則會被合併至一個大的array並全部執行。
想一想其實也是很合理的,string類的where主要用來進行連表操作,而array則一般是根據欄位的值進行檢索
相關文章
- 快取使用中的注意事項快取
- C中memcpy使用注意事項memcpy
- Linux中fork的使用注意事項Linux
- Oracle使用*的注意事項Oracle
- ListView中getChildAt(index)的使用注意事項ViewLDAIndex
- 使用parallel注意事項Parallel
- 2. Go中defer使用注意事項Go
- 使用c++中string類的注意事項C++
- ThinkPHP 的CURD 基本操作PHP
- 使用Google Fonts注意事項Go
- Go 切片使用注意事項Go
- 使用CocosBuilder注意事項UI
- removeChild使用時注意事項REM
- 使用Vue.js的注意事項Vue.js
- 使用HTTP的三個注意事項HTTP
- JavaScript 中 this 的工作原理以及注意事項JavaScript
- JavaScript中this的工作原理以及注意事項JavaScript
- delphi中的bpl開發注意事項
- 網站設計中的注意事項網站
- TCP使用注意事項總結TCP
- 萬兆網路卡使用注意事項
- MySQL半同步使用注意事項MySql
- Guava HashMultimap使用及注意事項Guava
- setbuf函式使用注意事項函式
- php getallheaders使用注意事項PHPHeader
- 使用直方圖注意事項直方圖
- ip代理軟體的使用注意事項
- 說點JSON使用的注意事項JSON
- cookie的使用方法以及注意事項Cookie
- 在 HttpHandler 中使用 Session 的注意事項HTTPSession
- golang 中 channel 的詳細使用、使用注意事項及死鎖分析Golang
- Xlistview的注意事項View
- ES6中箭頭函式使用的注意事項函式
- 開發及上線中的注意事項
- GO 中的 defer 有哪些注意事項?上Go
- 安裝linux中的注意事項(轉)Linux
- Oracle臨時表使用注意事項Oracle
- 伺服器使用安全注意事項伺服器