浅谈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 相关文章推荐
我的论坛源代码(九)
Oct 09 PHP
php csv操作类代码
Dec 14 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
thinkphp5框架API token身份验证功能示例
May 21 PHP
php pdo连接数据库操作示例
Nov 18 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异步执行的详解
2013/06/03 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
Javascript读取cookie函数代码
2010/10/16 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
Trench London官方网站:高级风衣和意大利皮夹克
2020/07/11 全球购物
存储过程的优点有哪些
2012/09/27 面试题
统计岗位职责
2014/02/21 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
社团活动总结书
2014/06/27 职场文书
中国梦读书活动总结
2014/07/10 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
抢劫罪辩护词
2015/05/21 职场文书
孙振耀退休感言
2015/08/01 职场文书
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android