laravel數據庫查詢返回的數據形式

版本:laravel5.4+php

問題描述:laravel數據庫查詢返回的數據不是單純的數組形式,而是數組與相似stdClass Object這種對象的結合體,即便在查詢構造器中調用了toArray(),也沒法轉換成單純的數組形式。html

問題解析laravel

(以上圖片來源於laravel學院5.3版本到5.4版本的升級手冊)數據庫

如上圖所示:Laravel再也不支持在配置文件中定製PDO的「fetch mode」,取而代之,老是使用PDO::FETCH_OBJ,若是你仍然想要爲應用定製fetch模式,須要監聽新的Illuminate\Database\Events\StatementPrepared事件。數組

問題解決app

打開app/Providers/EventServiceProvier.php,如文檔上所說,咱們要先引入Illuminate\Database\Events\StatementPrepared類ide

use Illuminate\Database\Events\StatementPrepared;fetch

而後在boot方法中加入如圖中給出的樣例代碼:ui

Event::listen(StatementPrepared::class, function ($event) { $event->statement->setFetchMode(\PDO::FETCH_ASSOC); //這裏咱們使用PDO::FETCH_ASSOC });
這樣咱們就大功告成啦,如今你的laravel數據庫查詢返回的數據就是單純的數組形式。
最後附上app/Providers/EventServiceProvier.php的總體代碼:
PDO::FETCH_ASSOC

<?php
namespace App\Providers;spa

use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Database\Events\StatementPrepared;

class EventServiceProvider extends ServiceProvider{
  /**
  * The event listener mappings for the application.
  *  
  * @var array
  */
  protected $listen = [
    'App\Events\Event' => [
      'App\Listeners\EventListener',
    ],
  ];
  /**
  * Register any events for your application.
  *
  * @return void
  */
  public function boot()
  {
    parent::boot();

    //
    Event::listen(StatementPrepared::class, function ($event) {
      $event->statement->setFetchMode(\PDO::FETCH_ASSOC);
    });
  }
}

 

轉載請註明出處哦 http://www.cnblogs.com/meng1314-shuai/p/7232080.html
相關文章
相關標籤/搜索