thinkphp作為國內(nèi)現(xiàn)階段最成熟的框架;沒有之一;
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都做網(wǎng)站、海淀網(wǎng)絡(luò)推廣、小程序定制開發(fā)、海淀網(wǎng)絡(luò)營銷、海淀企業(yè)策劃、海淀品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供海淀建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn
不得不說是有好些特別方便的方法的;
然而如果初接觸thinkphp的時候難免會被搞的有點迷茫;
for example這些:
getBy
getField
getFieldBy
我曾在相當一段時間內(nèi)都用的迷迷糊糊的;
直到后來把它們總結(jié)如下:
咱先虛擬一張表出來
+----+--------+--------------+
| id | name | avatar |
+----+--------+--------------+
| 1 | 白俊遙 | bjy.jpg |
| 2 | 帥白 | shuaibai.jpg |
| 3 | test | shuaibai.jpg |
+--+-------+----------------+
一:現(xiàn)在我們要獲取姓名為 白俊遙 的這條數(shù)據(jù);
常規(guī)情況是這樣寫的;
$data=M('Test')->where(array('name'=>'白俊遙'))->find()
如果用getby
的話就可以簡化為
$data=M('Test')->getByName('白俊遙');//通過name字段獲取整條數(shù)據(jù) $data=M('Test')->getByAvatar('bjy.jpg')//同理可得如果想通過avatar獲取整條數(shù)據(jù)就是這樣寫了 $data=M('Test')->getById(1);//聰明的童鞋立即就想到了如果要通過id那不就是這樣?對; //但是如果id是主鍵的話;這里有個更好用的方法 $data=M('Test')->find(1);//得到的結(jié)果和M('Test')->getById(1);是一樣的 打印值: Array ( [id] => 1 [name] => 白俊遙 [avatar] => bjy.jpg )
官方詳細文檔:http://document.thinkphp.cn/manual_3_2.html#dynamic_query
總結(jié)就是說;getBy
后邊是要跟一個字段的;
我們也發(fā)現(xiàn)了;上面獲取到的都是整條整條的數(shù)據(jù);
二:然而實際開發(fā)中;很多時候我們是想通過用戶名:白俊遙 找到他的頭像:bjy.jpg;
這時候就是getFieldBy
的應(yīng)用場景了;
常規(guī)情況是這樣寫的;
$data=M('Test')->field('avatar')->where(array('name'=>'白俊遙'))->find(); $avatar=$data['avatar'];
如果用getField
的話可以簡化為:
$avatar=M('Test')->where(array('name'=>'白俊遙'))->getField('avatar');
如果getFieldBy
那簡化的更殘忍了:
$avatar=M('Test')->getFieldByName('白俊遙','avatar'); 打印$avatar: bjy.jpg
官方詳細文檔:http://document.thinkphp.cn/manual_3_2.html#dynamic_query
總結(jié)就是說getFieldBy
后面跟一個字段括號內(nèi)有兩個參數(shù);第一個跟Field對應(yīng)的條件;第二個是要取的字段;
三:通過頭像名 shuaibai.jpg 獲取使用這個頭像的用戶名 帥白、test
常規(guī)是這樣寫的:
$data=M('Test')->field('name')->where(array('avatar'=>'shuaibai.jpg'))->select(); $name_array=array_column($data, 'name');
如果getField的話就可以簡化為:
$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
總結(jié)就是說:getField
是需要自己寫where的;傳的第一個參數(shù)就是需要獲取的字段;
如果只獲取一條值的時候不需要傳第二個參數(shù);如果有多個的話;則第二個參數(shù)傳true;
更詳細的用法偷個懶直接復(fù)制官方文檔了:
讀取字段值其實就是獲取數(shù)據(jù)表中的某個列的多個或者單個數(shù)據(jù),最常用的方法是 getField
方法。
示例如下:
$User = M("User"); // 實例化User對象 // 獲取ID為3的用戶的昵稱 $nickname = $User->where('id=3')->getField('nickname');
默認情況下,當只有一個字段的時候,返回滿足條件的數(shù)據(jù)表中的該字段的第一行的值。
如果需要返回整個列的數(shù)據(jù),可以用:
$User->getField('id',true); // 獲取id數(shù)組 //返回數(shù)據(jù)格式如array(1,2,3,4,5)一維數(shù)組,其中value就是id列的每行的值
如果傳入多個字段的話,默認返回一個關(guān)聯(lián)數(shù)組:
$User = M("User"); // 實例化User對象 // 獲取所有用戶的ID和昵稱列表 $list = $User->getField('id,nickname'); //兩個字段的情況下返回的是array(`id`=>`nickname`)的關(guān)聯(lián)數(shù)組, 以id的值為key,nickname字段值為value
這樣返回的list是一個數(shù)組,鍵名是用戶的id字段的值,鍵值是用戶的昵稱nickname。
如果傳入多個字段的名稱,例如:
$list = $User->getField('id,nickname,email'); //返回的數(shù)組格式是array(`id`=>array(`id`=>value,`nickname`=>value,`email`=>value)) 是一個二維數(shù)組,key還是id字段的值,但value是整行的array數(shù)組, 類似于select()方法的結(jié)果遍歷將id的值設(shè)為數(shù)組key
返回的是一個二維數(shù)組,類似select方法的返回結(jié)果,區(qū)別的是這個二維數(shù)組的鍵名是用戶的id(準確的說是getField方法的第一個字段名)。
如果我們傳入一個字符串分隔符:
$list = $User->getField('id,nickname,email',':');
那么返回的結(jié)果就是一個數(shù)組,鍵名是用戶id,鍵值是 nickname:email
的輸出字符串。
getField方法還可以支持限制數(shù)量,例如:
$this->getField('id,name',5); // 限制返回5條記錄 $this->getField('id',3); // 獲取id數(shù)組 限制3條記錄
可以配合使用order方法使用。更多的查詢方法可以參考查詢語言章節(jié)。
認真寫一篇博客真心不容易;寫著寫著就熬到了凌晨1點了;但愿能讓童鞋們少走一些彎路;也算不枉這么辛苦的碼字;
網(wǎng)頁名稱:總結(jié)thinkphp快捷查詢getBy、getField、getFieldBy用法及場景
標題來源:http://muchs.cn/article16/ighcgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站設(shè)計公司、做網(wǎng)站、網(wǎng)站設(shè)計、定制網(wǎng)站、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)