laravel5.2为什么查询结果不是二维数组呢?

$res=DB::select('select * from qq');
var_dump($res);

$res=DB::table('qq')->get();
var_dump($res);

用这两种方式查询后为什么图片中得到的是个一维数组呢?一维数组中为什么是对象呢?用原生查询得到的是二维数组 这个结果为什么不是二维数组呢?
图片描述

阅读 5.2k
3 个回答

以下为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对象一样。

//返回数组 laravel 默认返回的为对象
$res=DB::table('qq')->get()->toarray;
dump($res);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进