浅谈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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
如何把PHP转成EXE文件
Oct 09 PHP
PHP Document 代码注释规范
Apr 13 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
php生成图片缩略图功能示例
Feb 22 PHP
PHP Trait代码复用类与多继承实现方法详解
Jun 17 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
php实现根据身份证获取精准年龄
Feb 26 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
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
我常用的几个类
2006/10/09 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
python虚拟环境完美部署教程
2019/08/06 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Pyqt5自适应布局实例
2019/12/13 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
Python常用断言函数实例汇总
2020/11/30 Python
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
酒店管理自荐信
2013/10/23 职场文书
2014年残联工作总结
2014/11/21 职场文书
2015元旦标语横幅
2014/12/09 职场文书
办公室禁烟通知
2015/04/23 职场文书
小学校长开学致辞
2015/07/29 职场文书
决心书格式范文
2015/09/23 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python