浅谈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实现Socket服务器的代码
Apr 03 PHP
php之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
编写php应用程序实现摘要式身份验证的方法详解
Jun 08 PHP
php设计模式之单例、多例设计模式的应用分析
Jun 30 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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应用模式扩展详解
2014/07/16 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
vue+vuex+axio从后台获取数据存入vuex实现组件之间共享数据
2017/04/22 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
vue移动端实现下拉刷新
2018/04/22 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
node使用request请求的方法
2019/12/20 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
详细介绍Python中的偏函数
2015/04/27 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
九年级体育教学反思
2014/01/23 职场文书
求职自荐信怎么写
2014/03/06 职场文书
优秀班集体申报材料
2014/12/25 职场文书