浅谈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 Mysql类 可以参考学习熟悉下
Jun 21 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php采集时被封ip的解决方法
Aug 29 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 PHP
CodeIgniter自定义控制器MY_Controller用法分析
Jan 20 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
Symfony核心类概述
Mar 17 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
php微信公众号开发之校园图书馆
Oct 20 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 has encountered a Stack overflow问题解决方法
2014/11/03 PHP
php上传文件常见问题总结
2015/02/03 PHP
用cssText批量修改样式
2009/08/29 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Windows下为Python安装Matplotlib模块
2015/11/06 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Python使用jsonpath-rw模块处理Json对象操作示例
2018/07/31 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
Django在Model保存前记录日志实例
2020/05/14 Python
Python urllib2运行过程原理解析
2020/06/04 Python
大学毕业后的十年规划
2014/01/07 职场文书
超市端午节活动方案
2014/01/23 职场文书
少先队活动总结
2014/08/29 职场文书
学校开除通知书
2015/04/25 职场文书
java如何实现socket连接方法封装
2021/09/25 Java/Android
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python