浅谈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安装为Apache DSO
Oct 09 PHP
PHP session有效期问题
Apr 26 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
Jan 07 PHP
thinkphp配置文件路径的实现方法
Aug 30 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 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学习笔记之一
2011/01/17 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php二维数组转成字符串示例
2014/02/17 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
php数据序列化测试实例详解
2017/08/12 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
js简单时间比较的方法
2016/08/02 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
React学习之受控组件与数据共享实例分析
2020/01/06 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
Python中一些不为人知的基础技巧总结
2018/05/19 Python
Python学习小技巧总结
2018/06/10 Python
解决Python一行输出不显示的问题
2018/12/03 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
人事专员岗位职责范本
2014/03/04 职场文书
投资合作协议书范本
2014/04/17 职场文书
六五普法宣传标语
2014/10/06 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
房屋租房协议书范本
2014/12/04 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电
Tomcat配置访问日志和线程数
2022/05/06 Servers