Laravel 5.4+ 设置数据库返回格式为数组 setFetchMode(\PDO::FETCH_ASSOC)

Hyperf 的数据库查询构造器 方法将首先尝试使用第一个参数的键和值对来查找匹配的数据库记录。Hyperf 的数据库查询构造器为创建和运行数据库查询提供了一个方便的接口。最基本的方式是需要传递三个参数:第一个参数是列名,第二个参数是任意一个数据库系统支持的运算符,第三个是该列要比较的值。方法的第一个参数是你需要连接的表的名称,而其他参数则使用指定连接的字段约束。在块的回调里面更新或删除记录时,对主键或外键的任何更改都可能影响块查询。或者嵌套的参数分组。方法接受两个参数:一个用于查找记录的条件数组,以及一个包含要更改记录的键值对数组。 阅读详情

查看官方文档:https://laravel.com/docs/5.4/upgrade

Fetch Mode
Laravel no longer includes the ability to customize the PDO "fetch mode" from your configuration files. Instead, PDO::FETCH_OBJ is always used. If you would still like to customize the fetch mode for your application you may listen for the new  Illuminate\Database\Events\StatementPrepared event:

Event::listen(StatementPrepared::class, function ($event) {
    $event->statement->setFetchMode(...);
});

从5.4开始, 不能再通过配置文件的方式去改变fetch mode了。而使用了事件监听设置去实现该配置。

打开app/Providers/EventServiceProvier.php, 按照官方文档,先引入Illuminate\Database\Events\StatementPrepared类,然后在boot方法中加入上方样例代码,最终代码如下:

<?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);
        });
    }
}

我们设置了以关联数组的方式返回该查询结果即fetch mode设置为FETCH_ASSOC,注意,该设置只对Query Builder有效。

使用laravel数据库查询结果自动转数组 在项目中再次碰见laravel中从数据库中查询到的结果是对象,用toArray也不好用,之前改过一次,印象中是在/confing/database.php, 'fetch' => PDO::FETCH_OBJ,这行改为'fetch' =>FETCH_ASSOC就好用了,但是我现在做的这个是二次开发,那么如果这个改了,之前做的东西可能会出错,然后又找了找,查了查,结果是这样的 引用 use PDO; DB::setFetchMode(PDO::FETCH_ASSOC); $rs = DB: 阅读详情

相关推荐

Python地理空间数据库之geopandas使用详解

地理空间数据分析在许多领域中都有着广泛的应用,包括地理信息系统(GIS)、城市规划、环境科学、地质勘探等。Python GeoPandas是一个强大的库,旨在简化地理空间数据的处理和分析。本文将深入介绍GeoPandas库,包括其基本概念、功能特性、示例代码以及在实际应用中的应用场景。

Rocky006的博客 1万+

Laravel Database——数据库的 CRUD 操作源码分析

前言 当 connection 对象构建初始化完成后,我们就可以利用 DB 来进行数据库的 CRUD ( Create、Retrieve、Update、Delete) 操作。本篇文章,我们将会讲述 laravel 如何与 pdo 交互,实现基本数据库服务的原理。 run laravel 中任何数据库的操作都要经过 run 这个函数,这个函数作用在于重新连接数据库、记录数据库日志、数据库异常处理: protected function run($query, $bindings, Closure $callb

cangqiong_xiamen的博客 622

Agentic AI上下文工程架构终极指南:全面解决智能体理解问题

在开始架构设计前,我们需要先明确两个核心概念——Agentic AI和上下文工程。Agentic AI(智能体AI)是具备自主目标、环境交互、任务分解能力的AI系统。自主性:不需要人类逐步指令,能自己规划任务(比如“帮我订机票”→自动分解为“查航班→选座位→填信息→支付”);动态性:能根据环境变化调整行为(比如订机票时发现航班延误,自动改签到下一班);连续性:能记住历史交互(比如“上次你说喜欢靠窗位,这次帮你预留了”)。

AI开发架构师 1116

php--setFetchMode

PDOStatement::setFetchMode — 为语句设置默认的获取模式bool PDOStatement::setFetchMode ( int $mode )mode必须是 PDO::FETCH_* 系列常量中的一个 可使用参数:PDO::FETCH_ASSOC //从结果集中获取以列名为索引的关联数组。 PDO::FETCH_NUM //从结果集中获取一

kirsten_z的博客 2763

波克 上海 Unity开发笔试题 2024

主要分为四部分,如果没有准备好,不要点击笔试链接,进入就会自动开始。

z2014z的博客 3392

服务器测试之intel E8102CQDA2

网卡性能 iperf E810

qq_41897488的博客 2504

Laravel数据库查询结果自动转数组

环境:laravel5.6+php7.2.1 在APP\Providers\EventServiceProviders.php中 首先 use Illuminate\Database\Events\StatementPrepared 在boot方法中添加 Event::listen(StatementPrepared::class, function ($event) { $...

l56253221的博客 2480

会计引擎:交易与核算分离的前世今生

一、为什么需要会计引擎 金融产品的设计,一如一块硬币需要兼顾两面:一面是为客户提供好的金融服务,满足客户支付结算、借贷、资产保值增值等方面的需求,并在这个过程中,以数字化的方式做好客户资产的登记,登记的载体,则是“分户”或“台账”,如客户存款户,是一种典型的分户--资金的增减变化都在一个账户中进行体现,而客户购买的银行理财,因为收益率、期限、投资标的不同,每一笔持有就形成一行记录,即为“台账”--这当然是不严谨但相对形象的表述。但是,“分户”和“台账”并没有必然的区别,以贷款为例,一些银行仍然存在所谓“

银行信息系统应用架构详解 982

两种方式设定fetch()方法返回数据集格式(类型)setFetchMode

至于是格式还是类型,我还真形容不来了。 总之,可以通过传递参数的形式,和setFetchMode()方法的形式两种形式来设置。 代码如下 <?php //query();执行一条sql语句,并返回一个statement对象 header("Content-type:text/html;charset=utf-8"); try { $dsn='mysql:host=localhost

鱼火 2303

数据分析案例-2024 年全电动汽车数据集可视化分析

本数据集来源于Kaggle,原始数据集共有177866条数据,17个变量。该数据集显示了目前通过华盛顿州许可部 (DOL) 注册的电池电动汽车 (BEV) 和插电式混合动力电动汽车 (PHEV)。电池电动汽车 (BEV) 是一种全电动汽车,使用一个或多个电池来存储电能,为电机提供动力,并通过将车辆插入电源进行充电。插电式混合动力汽车 (PHEV) 是一种使用一个或多个电池为电动机提供动力的车辆;使用另一种燃料,例如汽油或柴油,为内燃机或其他推进源提供动力;并通过将车辆插入电源来充电。

m0_64336780的博客 1万+

WPF实现圆形菜单动态展开折叠效果

实现效果如下: 思路:根据子菜单个数计算旋转角度动态生成子菜单,并设置展开折叠动画。 步骤: 1、自定义按钮MyButton,建立展示图像属性DisplayImage public class MyButton : Button { public static readonly DependencyProperty DisplayImageProperty = DependencyProperty.Register("DisplayImage", typeof(

dnazhd的博客 3149

laravel 中数据库查询结果自动转数组

    今天在项目中再次碰见laravel中从数据库中查询到的结果是对象,用toArray也不好用,之前改过一次,印象中是在/confing/database.php,    'fetch' =&gt; PDO::FETCH_OBJ,这行改为'fetch' =&gt;FETCH_ASSOC就好用了,但是我现在做的这个是二次开发,那么如果这个改了,之前做的东西可能会出错,然后又找了找,查了查,结果是...

whan的博客 1万+

STM实战开发(13):STM32开发:使用光敏电阻检测光照强度

光敏电阻(LDR)是一种电阻值受光照强度影响的半导体材料。当光照强度增大时,光敏电阻的电阻值降低;而当光照强度减小时,电阻值则增大。光敏电阻的电阻变化与入射光的强度之间并不是线性关系,而是呈对数型的变化。LDR通常由硫化镉(CdS)或其他半导体材料构成,材料对不同波长的光有不同的响应特性。一般而言,光照强度越强,光敏电阻的电阻值越低,反之则越高。本文介绍了如何使用STM32与光敏电阻(LDR)结合,进行光照强度检测的实现方法。通过配置STM32的ADC模块,读取光敏电阻的电压信号,并根据电压计算光照强度。

2201_76125393的博客 3017

PHP的PDO基本操作

PDO与Mysqli的区别 PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension (“i” 意为 improved) PDO (PHP Data Objects) PDO 应用在 12 种不同数据库中, MySQLi 只针对 MySQL 数据库。 二者都支持预处理语句,可防止SQL注入。 PDO连接Mysql数据库 代码示例: <?php $serv...

k851819815的博客 1083

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

PDOStatement::fetch()用法

PDOStatement::fetch (PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0) PDOStatement::fetch — 从结果集中获取下一行 说明 mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH

houzhyan-博客 4247

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

PHP快速入门 -- PDO

PDO的数据获取方法与其他数据库扩展都非常类似,只要成功执行SELECT查询,都会有结果集对象产生。不管是使用PDO对象中的query()方法,还是使用prepare()和execute()等方法结合的预处理语句,执行SELECT查询都会得到相同的结果集对象PDOStatement。都需要通过PDOStatement类对象中的方法将数据遍历出来。下面介绍PDOStatement类中常见的几个获取结

小波专栏 1002

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

FetchMode的详细解释

FetchMode 分类: Dynamics AX 开发2009-09-02 19:00 1366人阅读 评论(1) 收藏 举报 queryjoinreport报表测试n2 本文通过几个列子解释FetchMode的使用,最后解释reportRun.Send()方法的第二个参数level的来源。   FetchMode   报表的Query的除最上层的DataSource以外所

HW_KING的专栏 5133

PDO::FETCH_ASSOC 到底是干什么的?

场景是否使用 PDO::FETCH_ASSOC示例代码直接输出数据到页面✅echo "姓名: " . $row['name'];生成 JSON 数据✅与前端交互(如 AJAX)✅需要列名动态处理数据✅只需要数字索引(如批量导入)❌(用 PDO::FETCH_NUM)为什么需要 PDO::FETCH_ASSOC?提高代码可读性:用列名而非数字索引,代码更易理解。减少错误:不依赖列顺序,表结构变化时更安全。适配动态场景:适合需要根据列名处理数据的场景。简单来说。

长风破浪会有时的博客 743

laravel mysql pdo_PHP 数据库统一处理 API —— PDO 扩展及其在 Laravel 底层的使用

PHP 数据库统一处理 API —— PDO 扩展及其在 Laravel 底层的使用由 学院君 创建于3年前, 最后更新于 1年前版本号 #316230 views13 likes0 collectsPHP 支持多种数据库,如 MySQL、PostgreSQL、SQLite 和 Oracle 等,并且这些数据库都提供了用于 PHP 和相应数据库之间通信的扩展,如 mysqli、sqlite3 等。...

weixin_42485891的博客 892

php7下pdo的各种fetch模式速度比较

简介 本文主要介绍通过压测数据来检验php7下pdo的各种fetch模式性能。 准备 一张5000条以上数据的表(批量数据生成) 测试用代码 <?php // ***************需替换*************** $pdo = new PDO('mysql:host=127.0.0.1;dbname=test_db;port=33062', 'root', 'pass

王命风的博客 3641

PDO简介及其基本使用

一、基本知识    1、什么是PDO?            PDO就是PHP data Object 提供了PHP操作多种数据库的统一的接口    2、为什么要使用PDO?                PDO是PHP5新加入的一个重大功能,我们的数据库服务器为MySQL,所有的程序代码的数据库操作全是一mysql()或者mysqli()函数来操作,当我们的数据库 需要更换时比如换成,SQL、S...

jiuyue9561的博客 1万+

Laravel 设置数据库查询结果自动转数组

查看官方文档:https://laravel.com/docs/5.4/upgrade Fetch Mode Laravel no longer includes the ability to customize the PDO "fetch mode" from your configuration files. Instead, PDO::FETCH_OBJ is always used. I...

Bel_Ami_n的博客 777

laravel5.6 数据库获取数据模式变为’数组‘

在laravel配置中搜索protected $fetchMode 然后改成 protected $fetchMode = PDO::FETCH_ASSOC;

长门有希的博客 1569

Laravel框架学习(使用DB门面操作数据库 原生SQL)

1、连接数据库 Laravel中数据库配置文件为config/database.php,打开该文件,默认内容如下:<?phpreturn [ //默认返回结果集为PHP对象实例 //具体返回结果可参考PDO.php(php PDO文档) // 数组格式 FETCH_ASSOC 'fetch' => PDO::FETCH_CLASS, //默认数据库连接为my

野蛮秘籍 2万+
上一篇: Laravel Call to undefined method Closure::__set_state ()
下一篇: Nginx常用配置参数
o王o
博客等级 码龄13年 32粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值