版本:laravel5.4+

问题描述:laravel数据库查询返回的数据不是单纯的数组形式,而是数组与类似stdClass Object这种对象的结合体,即使在查询构造器中调用了toArray(),也无法转换成单纯的数组形式。

问题解析

(以上图片来源于laravel学院5.3版本到5.4版本的升级手册)

如上图所示:Laravel不再支持在配置文件中定制PDO的“fetch mode”,取而代之,总是使用PDO::FETCH_OBJ,如果你仍然想要为应用定制fetch模式,需要监听新的Illuminate\Database\Events\StatementPrepared事件。

问题解决

打开app/Providers/EventServiceProvier.php,如文档上所说,我们要先引入Illuminate\Database\Events\StatementPrepared类

use Illuminate\Database\Events\StatementPrepared;

然后在boot方法中加入如图中给出的样例代码:

Event::listen(StatementPrepared::class, function ($event) {
$event->statement->setFetchMode(\PDO::FETCH_ASSOC); //这里我们使用PDO::FETCH_ASSOC
});
这样我们就大功告成啦,现在你的laravel数据库查询返回的数据就是单纯的数组形式。
最后附上app/Providers/EventServiceProvier.php的整体代码:

<?php
namespace App\Providers;

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
 

最新文章

  1. 分享一个php邮件库——swiftmailer
  2. web前端基础知识总结
  3. ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格
  4. asp.net 重定向的三种方法
  5. 操作系统开发系列—12.f.在内核中添加中断处理 ●
  6. Java设计模式之代理模式
  7. request.GetResponse 400错误处理方法
  8. java基础知识回顾之java Thread类学习(十二)-- 线程中断
  9. UVa 10622 (gcd 分解质因数) Perfect P-th Powers
  10. javascript模式——Prototype模式
  11. Javascript: Let user select an HTML element like Firebug?综述
  12. 三.redis 排序
  13. Codeforces#355
  14. Docker 容器启动 查看容器状态 - 四
  15. js五星评分
  16. windows系统中Dotnet core runtime 安装后,无法启动次程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法
  17. Log Shipping搭建
  18. 深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks
  19. 使用curl发起https请求
  20. Win10 pip install gensim 报错处理

热门文章

  1. MQ产品比较-ActiveMQ-RocketMQ
  2. Codility---MaxProfit
  3. Spring学习(15)--- 基于Java类的配置Bean 之 @Bean &amp; @Scope 注解
  4. Vue的报错:Uncaught TypeError: Cannot assign to read only property &#39;exports&#39; of object &#39;#&lt;Object&gt;&#39;
  5. [0] 领域模型 VS 贫血模型
  6. Docker Machine 简介
  7. .net 4.0 中的特性总结(五):并行编程
  8. Java 基础 程序流程控制 (下)
  9. Itunes制作手机铃声,图文版
  10. IOS 固定定位底部input输入框,获取焦点时弹出的输入法键盘挡住input