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();                    //回滚


很简单。


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



目录
相关文章
|
29天前
|
SQL 数据库连接 数据库
你不知道ADo.Net中操作数据库的步骤【超详细整理】
你不知道ADo.Net中操作数据库的步骤【超详细整理】
16 0
|
1月前
|
SQL 开发框架 JavaScript
在 Vue 中进行数据持久化时,有哪些常用的数据库框架?
在 Vue 中进行数据持久化时,有哪些常用的数据库框架?
48 3
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
36 0
|
3月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
66 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
2天前
|
SQL JavaScript API
❤Nodejs 第四章(操作本地数据库实现删除-源码地址已开放)
【4月更文挑战第4天】❤Nodejs 第四章(操作本地数据库实现删除-源码地址已开放)在Node.js中实现删除本地数据库记录的操作。首先尝试通过SQL删除ID为8的用户,然后编写`app.delete`路由处理程序,从请求体获取ID并执行删除。。最终成功删除用户并展示了数据库的更新结果。下一节将优化增删改查功能。
15 1
|
1月前
|
缓存 NoSQL 数据库
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
[Redis]——数据一致性,先操作数据库,还是先更新缓存?
|
1月前
|
SQL 存储 关系型数据库
【mysql】—— 数据库的操作
【mysql】—— 数据库的操作
【mysql】—— 数据库的操作
|
1月前
|
关系型数据库 MySQL 数据库连接
实战演练:使用Go语言和ORM框架与数据库进行交互
【2月更文挑战第13天】本文将通过一个实战演练,展示如何使用Go语言和ORM(对象关系映射)框架与数据库进行交互。我们将选择一个流行的ORM框架,如GORM,来完成这个任务。通过实际编码,我们将演示如何连接数据库、执行CRUD操作、处理错误和异常,并展示ORM框架如何简化数据库操作过程。
|
2月前
|
存储 SQL 数据库连接
连接并操作数据库:Python 数据库案例
数据库是一种用于存储和管理数据的工具,它以一种有组织的方式将数据存储在文件或内存中,以便于检索和处理。数据库系统通常使用 SQL(Structured Query Language)语言来进行数据的操作,包括数据的插入、查询、更新和删除等。
|
2月前
|
前端开发 数据库连接 数据库
ASP.NETMVC数据库完整CRUD操作示例
ASP.NETMVC数据库完整CRUD操作示例
29 0