浅谈laravel数据库查询返回的数据形式


Posted in PHP onOctober 21, 2019

版本:laravel5.4+

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

问题解析:

浅谈laravel数据库查询返回的数据形式

(以上图片来源于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);
});
}
}

以上这篇浅谈laravel数据库查询返回的数据形式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP聊天室技术
Oct 09 PHP
PHP学习资料汇总与网址
Mar 16 PHP
PHP如何编写易读的代码
Jul 10 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 PHP
php微信开发之自定义菜单完整流程
Oct 08 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 #PHP
Laravel5.5 视图 - 创建视图和数据传递示例
Oct 21 #PHP
laravel orm 关联条件查询代码
Oct 21 #PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 #PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 #PHP
Laravel ORM 数据model操作教程
Oct 21 #PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 #PHP
You might like
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
python复制文件代码实现
2013/12/23 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
Canvas绘制浮动球效果的示例
2017/12/29 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
Solaris操作系统的线程机制
2012/12/23 面试题
毕业实习证明(4篇)
2014/10/28 职场文书
跑吧孩子观后感
2015/06/10 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
php实现自动生成验证码的实例讲解
2021/11/17 PHP
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript