浅谈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正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
php使用反射插入对象示例分享
Mar 11 PHP
神盾加密解密教程(二)PHP 神盾解密
Jun 08 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
Jul 18 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
PHP无限极分类函数的实现方法详解
Apr 15 PHP
php多文件打包下载的实例代码
Jul 12 PHP
Yii框架分页技术实例分析
Aug 30 PHP
PHP通过文件保存和更新信息的方法分析
Sep 12 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
关于Sphinx创建全文检索的索引介绍
2013/06/25 PHP
php去除HTML标签实例
2013/11/06 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
Python编写百度贴吧的简单爬虫
2015/04/02 Python
简单介绍Python中的len()函数的使用
2015/04/07 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Python做简单的字符串匹配详解
2017/03/21 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
详解Python自建logging模块
2018/01/29 Python
Django 内置权限扩展案例详解
2019/03/04 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
Linux如何压缩可执行文件
2014/03/27 面试题
军校本科大学生自我评价
2014/01/14 职场文书
模特大赛策划方案
2014/05/28 职场文书
大学生求职信例文
2014/06/29 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
写给导师的自荐信
2015/03/06 职场文书
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android