Yii2框架(二)数据库相关操作

简介: Yii2.0大概封装了两大众方法来执行数据库操作:1:query()和queryXXX()方法,query()方法返回的是对象一般用的较少,当然,这个是对我来说,具体看你自己的需求。2:execute方法

QQ图片20220425210711.png

Yii2.0的数据库操作。


由于我这里安装的是yii2.0-advanced版本。这个破玩意是自带数据库的,上一篇的安装中数据库也一起随之安装完成。配置啥的,也都配置完成。


不论什么框架,对数据库都是有一套自己独立封装的模型操作类。


但是我一般都不用,学习成本太高,而且他其中封装的方法啥的一般都接触不全。学起来太费劲了。反正底层执行的都是sql。


所以这里Yii2.0自己封装的数据库相关的模型操作,我就略过了。


一般我习惯使用原生sql语句来对数据库进行增删改查。而且这种方法,我觉得对后期的维护也是一种很好的选择,毕竟,原生Sql语句,应该都能看的懂。少去了学习框架这部分的时间。


正式开始:


这里要说一下,Yii2.0中外部可以访问的方法都需要加上action,别问为什么,规定。


Yii2.0大概封装了两大众方法来执行数据库操作:


1:query()和queryXXX()方法,query()方法返回的是对象一般用的较少,当然,这个是对我来说,具体看你自己的需求。


(1):query方法


$dataReader=$command->query();
//返回CDbDataReader对象,注意这代表结果集而不是记录,可以通过以下方法来获取(遍历)记录:
// CDbDataReader::read()可以一次获取一行数据,到末尾时返回false
while(($row=$dataReader->read())!==false) 
// CDbDataReader实现了迭代器接口因此可以使用foreach遍历
foreach($dataReader as $row)
// 一次性返回所有的记录(数组)
    $rows=$dataReader->readAll();


我们分别写几段代码来测试Yii2.0框架中为我们提供的执行原生sql的方法。


(2):queryXXX方法


(1)查询所有数据:(二维数组)queryAll


// sql语句
        $sql_queryAll = "SELECT * FROM art_category";
        // 创建查询对象
        $command=Yii::$app->db->createCommand($sql_queryAll);
        // 执行查询所有数据
        $result = $command->queryAll();
        echo "<pre>";
        var_dump($result);


(2):查询第一行数据:(一维数组)queryOne


// sql语句
        $sql_queryAll = "SELECT * FROM art_category ";
        // 创建查询对象
        $command=Yii::$app->db->createCommand($sql_queryAll);
        // 执行查询所有数据
        // $result = $command->queryAll();
        // 执行查询一行数据
        $result = $command->queryOne();
        echo "<pre>";
        var_dump($result);


其余的方法平时用的不多,用的话也是在sql语句里边实现的


2:execute方法


用于数据更新(非查询)操作(INSERT, UPDATE 和 DELETE),返回的是操作受影响的记录行数


(1):增加insert()->execute


// 批量写入
        $insertSql = "INSERT INTO art_category (cat_name,cat_pid) 
                        values ('xxx','32'), ('aaaaaaa','963')";
        $command=Yii::$app->db->createCommand($insertSql);
        // 返回写入成功条数。
        $result = $command->execute();
        echo "<pre>";
        var_dump($result);


(2):修改update()->execute


// 修改语句
        $sql = "UPDATE art_category SET cat_name = 'camellia' WHERE id = 10";
        $command=Yii::$app->db->createCommand($sql);
        // 返回修改成功条数。
        $result = $command->execute();
        echo "<pre>";
        var_dump($result);


(3):删除delete()->execute


// 删除语句
        $sql = "DELETE FROM art_category WHERE id = '10'";
        $command=Yii::$app->db->createCommand($sql);
        // 返回删除成功条数。
        $result = $command->execute();
        echo "<pre>";
        var_dump($result);


执行原生sql的方法大概就是这些,后边遇到了再看吧。


然后看一下Yii2.0框架对于数据库事务的操作:


$db = Yii::app()->db;
$dbTrans = $db->beginTransaction();      //开始事物
$dbTrans->commit();                      //提交
$dbTrans->rollback();                    //回滚


很简单。


最后数据无价,谨慎操作。



目录
相关文章
|
4月前
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
291 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
4月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
57 1
|
4月前
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
|
5月前
|
开发框架 缓存 NoSQL
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
|
5月前
|
开发框架 Oracle 关系型数据库
ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理
|
4月前
|
druid Java 数据库连接
SpringBoot项目整合MybatisPlus持久层框架+Druid数据库连接池,以及实现增删改查功能
SpringBoot项目整合MybatisPlus和Druid数据库连接池,实现基本的增删改查功能。
383 0
|
5月前
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错合集之cdc postgres数据库,当表行记录修改后报错,该如何修改
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
开发框架 NoSQL 关系型数据库
基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
|
5月前
|
开发框架 前端开发 关系型数据库
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据

热门文章

最新文章