總結thinkphp快捷查詢getBy、getField、getFieldBy用法及場景

      網友投稿 789 2022-05-30

      ThinkPHP作為國內現階段最成熟的框架;沒有之一;

      不得不說是有好些特別方便的方法的;

      然而如果初接觸thinkphp的時候難免會被搞的有點迷茫;

      for example這些:

      getBy

      getField

      getFieldBy

      我曾在相當一段時間內都用的迷迷糊糊的;

      直到后來把它們總結如下:

      咱先虛擬一張表出來

      +----+--------+--------------+

      | id | name?? | avatar????? ? ? ? ? |

      +----+--------+--------------+

      |? 1 | 白俊遙? | bjy.jpg??? ? ? ? ?? |

      總結thinkphp快捷查詢getBy、getField、getFieldBy用法及場景

      |? 2 | 帥白? ?? | shuaibai.jpg???? |

      |? 3 | test? ? ? | shuaibai.jpg?? ? |

      +--+-------+----------------+

      一:現在我們要獲取姓名為 白俊遙 的這條數據;

      常規情況是這樣寫的;

      [php] view plain copy

      $data=M('Test')->where(array('name'=>'白俊遙'))->find()

      如果用getby的話就可以簡化為

      [php] view plain copy

      $data=M('Test')->getByName('白俊遙');//通過name字段獲取整條數據$data=M('Test')->getByAvatar('bjy.jpg')//同理可得如果想通過avatar獲取整條數據就是這樣寫了$data=M('Test')->getById(1);//聰明的童鞋立即就想到了如果要通過id那不就是這樣?對;????????????????????????????//但是如果id是主鍵的話;這里有個更好用的方法$data=M('Test')->find(1);//得到的結果和M('Test')->getById(1);是一樣的打印值:Array(????[id]?=>?1????[name]?=>?白俊遙????[avatar]?=>?bjy.jpg)

      官方詳細文檔:http://document.thinkphp.cn/manual_3_2.html#dynamic_query

      總結就是說;getBy后邊是要跟一個字段的;

      我們也發現了;上面獲取到的都是整條整條的數據;

      二:然而實際開發中;很多時候我們是想通過用戶名:白俊遙 找到他的頭像:bjy.jpg;

      這時候就是getFieldBy的應用場景了;

      常規情況是這樣寫的;

      [php] view plain copy

      $data=M('Test')->field('avatar')->where(array('name'=>'白俊遙'))->find();$avatar=$data['avatar'];

      如果用getField的話可以簡化為:

      [php] view plain copy

      $avatar=M('Test')->where(array('name'=>'白俊遙'))->getField('avatar');

      如果getFieldBy那簡化的更殘忍了:

      [php] view plain copy

      $avatar=M('Test')->getFieldByName('白俊遙','avatar');打印$avatar:bjy.jpg

      官方詳細文檔:http://document.thinkphp.cn/manual_3_2.html#dynamic_query

      總結就是說getFieldBy后面跟一個字段括號內有兩個參數;第一個跟Field對應的條件;第二個是要取的字段;

      三:通過頭像名 shuaibai.jpg 獲取使用這個頭像的用戶名 帥白、test

      常規是這樣寫的:

      [php] view plain copy

      $data=M('Test')->field('name')->where(array('avatar'=>'shuaibai.jpg'))->select();$name_array=array_column($data,?'name');

      如果getField的話就可以簡化為:

      [php] view plain copy

      $avatar_array=M('Test')->where(array('avatar'=>'shuaibai.jpg'))->getField('name',true);打印$avatar_array:Array(????[0]?=>?帥白????[1]?=>?test)

      官方詳細文檔:http://document.thinkphp.cn/manual_3_2.html#read_data

      總結就是說:getField是需要自己寫where的;傳的第一個參數就是需要獲取的字段;

      如果只獲取一條值的時候不需要傳第二個參數;如果有多個的話;則第二個參數傳true;

      更詳細的用法偷個懶直接復制官方文檔了:

      讀取字段值其實就是獲取數據表中的某個列的多個或者單個數據,最常用的方法是?getField方法。

      示例如下:

      [php] view plain copy

      $User?=?M("User");?//?實例化User對象//?獲取ID為3的用戶的昵稱?$nickname?=?$User->where('id=3')->getField('nickname');

      默認情況下,當只有一個字段的時候,返回滿足條件的數據表中的該字段的第一行的值。

      如果需要返回整個列的數據,可以用:

      [php] view plain copy

      $User->getField('id',true);?//?獲取id數組//返回數據格式如array(1,2,3,4,5)一維數組,其中value就是id列的每行的值

      如果傳入多個字段的話,默認返回一個關聯數組:

      [php] view plain copy

      $User?=?M("User");?//?實例化User對象//?獲取所有用戶的ID和昵稱列表?$list?=?$User->getField('id,nickname');//兩個字段的情況下返回的是array(`id`=>`nickname`)的關聯數組,以id的值為key,nickname字段值為value

      這樣返回的list是一個數組,鍵名是用戶的id字段的值,鍵值是用戶的昵稱nickname。

      如果傳入多個字段的名稱,例如:

      [php] view plain copy

      $list?=?$User->getField('id,nickname,email');//返回的數組格式是array(`id`=>array(`id`=>value,`nickname`=>value,`email`=>value))是一個二維數組,key還是id字段的值,但value是整行的array數組,類似于select()方法的結果遍歷將id的值設為數組key

      返回的是一個二維數組,類似select方法的返回結果,區別的是這個二維數組的鍵名是用戶的id(準確的說是getField方法的第一個字段名)。

      如果我們傳入一個字符串分隔符:

      [php] view plain copy

      $list?=?$User->getField('id,nickname,email',':');

      那么返回的結果就是一個數組,鍵名是用戶id,鍵值是?nickname:email的輸出字符串。

      getField方法還可以支持限制數量,例如:

      [php] view plain copy

      $this->getField('id,name',5);?//?限制返回5條記錄$this->getField('id',3);?//?獲取id數組?限制3條記錄

      可以配合使用order方法使用。更多的查詢方法可以參考查詢語言章節。

      認真寫一篇博客真心不容易;寫著寫著就熬到了凌晨1點了;但愿能讓童鞋們少走一些彎路;也算不枉這么辛苦的碼字;

      ThinkPHP 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:大數據基礎學習四:偽分布式 Hadoop 在 Ubuntu 上的安裝流程完整步驟、易錯點分析及需要注意的問題
      下一篇:數字化轉型下 軟件產業變革新動能
      相關文章
      精品国产日韩亚洲一区91| 亚洲国产亚洲片在线观看播放| 亚洲国产成人久久99精品| 亚洲男同帅GAY片在线观看| 亚洲中文字幕无码爆乳av中文| 亚洲AV伊人久久青青草原| 婷婷亚洲综合五月天小说在线| 亚洲av综合av一区二区三区| 亚洲色中文字幕在线播放| 亚洲kkk4444在线观看| 久久狠狠爱亚洲综合影院| 国产v亚洲v天堂a无| 亚洲 欧洲 日韩 综合在线| 亚洲日韩国产精品乱-久| 国产成人亚洲综合网站不卡| 中文字幕在线日亚洲9| 亚洲日韩精品A∨片无码加勒比| 亚洲成a∧人片在线观看无码| 亚洲色在线无码国产精品不卡| 亚洲kkk4444在线观看| 亚洲日本一线产区和二线| 亚洲AV无码AV男人的天堂不卡 | 亚洲欧美成人av在线观看| 亚洲日韩一区精品射精| 亚洲日产乱码一二三区别| 亚洲AV成人一区二区三区观看| 国产精品亚洲二区在线| 亚洲国产天堂久久久久久| 亚洲精品国自产拍在线观看| 国产亚洲精品不卡在线| 亚洲香蕉成人AV网站在线观看| 久久精品7亚洲午夜a| 亚洲精品一卡2卡3卡三卡四卡| 亚洲一区无码中文字幕乱码| 亚洲欧美黑人猛交群| 亚洲av高清在线观看一区二区| 三上悠亚亚洲一区高清| 亚洲AV永久无码精品| 91久久亚洲国产成人精品性色| 亚洲乱码一二三四五六区| 亚洲日韩乱码中文字幕|