thinkphp getField( )和field( )
做數據庫查詢的時候,比較經常用到這兩個,總是查手冊,記不住,現在把它總結下,希望以后用的時候不查手冊了。
不管是用select 查詢數據集,還是用find 查詢數據,常配合連貫操作where、field、order等一起使用。
field():用於定義要查詢的字段(支持字段排除)
用法:field($field , $except=false)
參數:$field —— 字段名,要查詢的字段名;
$except —— 是否排除,默認為false,省略不寫;如果為true,表示定義的字段為數據表中排除$field參數定義之外的所有字段
返回值:當前的模型實例
注:不調用field方法,默認返回所有字段,和field( '*' )等效。
需要顯式的傳入所有的字段,可以使用下面的方法:
$model -> field(true) ->select() ;
但是建議只獲取需要顯式的字段名,或者采用字段排除方式來定義,例如:
$model ->field( 'status' , true) ->select(); //獲取除了status之外的所有字段
$model ->field( 'id','nickname')->select(); //獲取id和nickname字段
getField():用於查詢某個字段的值
用法:getField($field, $sepa=null)
參數:$field —— 要獲取的字段字符串(多個用逗號分隔)
$sepa —— 字段數據間隔符號,如果是 NULL返回數組為數組。默認為null
返回值:如果查詢結果為空返回null,如果field是一個字段則返回該字段的值,如果field是多個字段,返回數組。數組的索引是第一個字段的值,sepa為null則返回二維數組。
示例:當只有一個字段的時候,默認返回一個值。
$User = M("User"); // 實例化User對象 // 獲取ID為3的用戶的昵稱 $nickname = $User->where('id=3')->getField('nickname');
示例:如果需要返回數組:
$this->getField('id',true); // 獲取id數組
示例:如果傳入多個字段的話,默認返回一個關聯數組,
返回的list是一個數組,鍵名是用戶的id, 鍵值是用戶的昵稱nickname。
$User = M("User"); // 實例化User對象 // 獲取所有用戶的ID和昵稱列表 $list = $User->getField('id,nickname');
示例:如果傳入多個字段的名稱,例如:
$list = $User->getField('id,nickname,email');
它返回的是一個二維數組,類似select方法的返回結果,區別的是這個二維數組的鍵名是用戶的id(准確的說是:getField方法的第一個字段名)。
示例:如果我們傳入一個字符串分隔符:
$list = $User->getField('id,nickname,email',':');
那么返回的結果就是一個數組,鍵名是用戶id,鍵值是 nickname:email的輸出字符串。
另外:sepa參數還可以支持限制數量,可以配合使用order方法使用。例如:
$this->getField('id,name',5); // 限制返回5條記錄 $this->getField('id',3); // 獲取id數組 限制3條記錄