浅谈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 相关文章推荐
ASP知识讲座四
Oct 09 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php小偷相关截取函数备忘
Nov 28 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 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
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
JS 判断代码全收集
2009/04/28 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
了解javascript中的Dom操作
2019/05/27 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python检查URL是否正常访问的小技巧
2017/02/25 Python
python实现学员管理系统
2019/02/26 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
python中re模块知识点总结
2021/01/17 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
Python面试题:Python是如何进行内存管理的
2014/08/04 面试题
计算机大学生的自我评价
2013/10/15 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
会计专业自我鉴定
2014/02/10 职场文书
精彩的广告词
2014/03/19 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
暑期实践个人总结
2015/03/06 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
飞越疯人院观后感
2015/06/09 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android
DQL数据查询语句使用示例
2022/12/24 MySQL