Warum ist das Abfrageergebnis von Laravel5.2 kein zweidimensionales Array?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-06 09:54:43
0
2
826
$res=DB::select('select * from qq');
var_dump($res);

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

Warum erhalte ich nach Verwendung dieser beiden Abfragemethoden ein eindimensionales Array im Bild? Warum gibt es Objekte in eindimensionalen Arrays? Mit der nativen Abfrage erhalten wir ein zweidimensionales Array. Warum ist das Ergebnis kein zweidimensionales Array?

曾经蜡笔没有小新
曾经蜡笔没有小新

Antworte allen(2)
阿神

以下为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);
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage