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(); //回滚
很简单。
最后数据无价,谨慎操作。