ThinkPHP5中find()和select()區別

ThinkPHP5中find()和select()區別

讀取數據是指讀取數據表中的一行數據(或者關聯數據),主要經過find方法完成,例如:php

1
2
3
4
$User  = M( "User" );  // 實例化User對象
// 查找status值爲1name值爲think的用戶數據 
$data  $User ->where( 'status=1 AND name="thinkphp"' )->find();
dump( $data );

find方法查詢數據的時候能夠配合相關的連貫操做方法,其中最關鍵的則是where方法,如何使用where方法咱們會在查詢語言章節中詳細描述。thinkphp

若是查詢出錯,find方法返回false,若是查詢結果爲空返回NULL,查詢成功則返回一個關聯數組(鍵值是字段名或者別名)。 若是上面的查詢成功的話,會輸出:數組

1
2
3
4
array  (size=3)
   'name'  => string  'thinkphp'  (length=8)
   'email'  => string  'thinkphp@gmail.com'  (length=18)
   'status' => int 1

即便知足條件的數據不止一個,find方法也只會返回第一條記錄(能夠經過order方法排序後查詢)。post

還能夠用data方法獲取查詢後的數據對象(查詢成功後)ui

1
2
3
4
$User  = M( "User" );  // 實例化User對象
// 查找status值爲1name值爲think的用戶數據 
$User ->where( 'status=1 AND name="thinkphp"' )->find();
dump( $User ->data());

讀取數據集this

讀取數據集其實就是獲取數據表中的多行記錄(以及關聯數據),使用select方法,使用示例:spa

1
2
3
$User  = M( "User" );  // 實例化User對象
// 查找status值爲1的用戶數據 以建立時間排序 返回10條數據
$list  $User ->where( 'status=1' )->order( 'create_time' )->limit(10)->select();

若是查詢出錯,select的返回值是false,若是查詢結果爲空,則返回NULL,不然返回二維數組。調試

 
 
$about=M('document');
$abouts=$about->where('id=2')->select();
$abouts2=$about->where('id=2')->find();
var_dump($abouts);
var_dump($abouts2);

輸出結果:code

array (size=1)
  0 => 
    array (size=24)
      'id' => string '2' (length=1)
      'uid' => string '1' (length=1)
      'name' => string '' (length=0)
      'title' => string '公司簡介' (length=12)
      'category_id' => string '39' (length=2)
      'group_id' => string '0' (length=1)
      'description' => string '公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介' (length=156)
      'root' => string '0' (length=1)
      'pid' => string '0' (length=1)
array (size=24)
  'id' => string '2' (length=1)
  'uid' => string '1' (length=1)
  'name' => string '' (length=0)
  'title' => string '公司簡介' (length=12)
  'category_id' => string '39' (length=2)
  'group_id' => string '0' (length=1)
  'description' => string '公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介公司簡介' (length=156)
  'root' => string '0' (length=1)
  'pid' => string '0' (length=1)

從上面的代碼能夠看出,find()返回一個一維數組select()返回一個二維數組,因此在取值時有所不一樣,一維數組取值用$data["id"],二維數組取值用$data[0]["id"],因爲一開始沒了解這個用法,調試一天也取不值,最後有var_dump()方法纔看到兩個方法的不一樣所在!對象

        $about=M('document');
        $abouts=$about->where('id=2')->select();
        $abouts2=$about->where('id=2')->find();
//        var_dump($abouts);
//        var_dump($abouts2);
         if($abouts){
            $article = M('document_article');
            //$info = $article->find($abouts['id']);
            $info=$article->where('id='.$abouts2['id'])->find();
        }
        $this->assign('wzjj',$info);
相關文章
相關標籤/搜索