$res=DB::select('select * from qq');
var_dump($res);
$res=DB::table('qq')->get();
var_dump($res);
用這兩種方式查詢後為什麼圖片中得到的是個一維數組呢?一維數組中為什麼是物件?用原生查詢得到的是二維數組 這個結果為什麼不是二維數組呢?
阿神2017-06-06 09:56:43
以下為Laravel 5.4版本的,因為沒有使用過5.2版本的Laravel。
運行原生的SQL查詢,取得的是一個以數組形式的結果集,詳見文件。
$res = DB::select('select * from qq');
dd($res);
/*
* array:5 [▼
0 => {#388 ▶}
1 => {#399 ▶}
2 => {#400 ▶}
3 => {#401 ▶}
4 => {#402 ▶}
]
*/
使用查詢建構器運行SQL語句,取得的是一個Collection對象,詳見文件。
$res = DB::table('qq')->get();
dd($res);
/*
* Collection {#398 ▼
#items: array:5 [▼
0 => {#399 ▶}
1 => {#400 ▶}
2 => {#401 ▶}
3 => {#402 ▶}
4 => {#403 ▶}
]
}
*/
運行原生SQL語句取得的是一個一維數組且包裹著一個對象,並非二維數組。
使用查詢建構器取得的是一個Collection對象,裡面也是一個一維陣列包裹著一個個對象。那為何要回傳Collection物件呢,因為其內建了許多有用且優雅的方法。就像Eloquent預設回傳Collection物件一樣。