tp5.0 模型查詢數據的返回類型,分頁


一開始用painate()這個函數的時候,發現有的查詢方式不能使用這個函數,由此了解到了模型查詢和普通查詢返回類型的不同

1.原生查詢方法

Db::query("select * from shop");

查詢成功返回:二維數組


array(2) {
  [0]=>
  array(5) {
    ["username"]=>
    string(0) ""
    ["title"]=>
    string(10) "java課本"
    ["comment"]=>
    string(22) "java課本課本課本"
    ["time"]=>
    string(19) "2019-02-18 23:12:03"
    ["id"]=>
    int(1)
  }
  [1]=>
  array(5) {
    ["username"]=>
    string(0) ""
    ["title"]=>
    string(1) "c"
    ["comment"]=>
    string(10) "cccccccccc"
    ["time"]=>
    string(19) "2019-02-18 23:12:26"
    ["id"]=>
    int(2)
  }
}


查詢失敗:array(0) { }

二維數組為空  

2.查詢構造器

select方法

Db::table('shop')->select(); 

返回的是二維數組,和原生的查詢結果一樣,查詢失敗同樣返回空數組。

find方法

Db::table('shop')->find();  

只能查詢一條數據,返回的是第一個查詢到的數據,方式是一維數組

array(5) {
  ["username"] => string(0) ""
  ["title"] => string(10) "java課本"
  ["comment"] => string(22) "java課本課本課本"
  ["time"] => string(19) "2019-02-18 23:12:03"
  ["id"] => int(1)
}

查詢失敗:NULL

需要分頁的時候:

Db::name('shop')->paginate(10);
需要分頁的時候不能用select,因為數組在tp5中是不支持直接分頁的,->paginate()的使用者必須是個object類型。

3.模型

首先知道,模型查出來的數據都是對象,要轉化為數組的方法是在database.php加上

'resultset_type' => '\think\Collection',
便可以調用->toArray()方法  

實際上,因為tp5框架的設計,兩種數據在進行數據處理上沒有差別

1.get方法

①用來查詢一條數據

$test3=Shop::get(1);或者$test3 = Shop::get(['id' => '1']);
echo $test3->time;

返回類型:對象。

通過

$test3=Shop::get(1)->toArray();變為一維數組

②查詢失敗:返回NULL

2.all方法

① 用來查詢一堆數據,toArray()后變為二維數組
② 遍歷


foreach ($test3 as $key => $value) {
    		var_dump($value['time']);//time是字段名字
    	}

③查詢失敗

不變為數組返回:} object(think\Collection)#19 (1) { ["items":protected]=> array(0) { } }

變為數組返回:空數組

3.select方法

$test4=Shop::select();
    	foreach ($test4 as $key ) {
    		var_dump($key['time']);//time字段
    	}
    	
使用處理二維數組的方法處理就好了

4.find也可以用

5.分頁

使用者必須是對象

模型的分頁,官方:
$test6=Shop::paginate(10);

我自己試了下,發現find查詢出來的語句也是可以分頁的,select就不行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM