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

638 阅读2分钟

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

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

很简单。

最后

数据无价,谨慎操作。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问小程序:

在这里插入图片描述