yii2数据库操作DAO

Posted 云儿且行且珍惜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2数据库操作DAO相关的知识,希望对你有一定的参考价值。

执行 SQL 语句

1 $db = \Yii::$app->db;
2 $rows = $db->createCommand(‘SELECT * FROM zs_dynasty‘)
3 ->queryAll();

 

1 $rowCount=$command->execute();   // 执行无查询 SQL
2 $dataReader=$command->query();   // 执行一个 SQL 查询
3 $rows=$command->queryAll();      // 查询并返回结果中的所有行
4 $row=$command->queryRow();       // 查询并返回结果中的第一行
5 $column=$command->queryColumn(); // 查询并返回结果中的第一列
6 $value=$command->queryScalar();  // 查询并返回结果中第一行的第一个字段

 


获取查询结果

 1 $db = \Yii::$app->db;
 2 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘)
 3     ->query();
 4 while(($row=$query->read())!==false) { 
 5     print_r($row);
 6 }
7 // 使用 foreach 遍历数据中的每一行 8 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘) 9 ->query(); 10 foreach($query as $row) { 11 print_r($row); 12 } 13 // 一次性提取所有行到一个数组 14 $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘) 15 ->query(); 16 $rows=$query->readAll(); 17 print_r($rows);使用事务
 1 $db = \Yii::$app->db;
 2 $transaction=$db->beginTransaction();
 3 try
 4 {
 5     $query = $db->createCommand(‘SELECT * FROM zs_dynasty‘)
 6         ->query();
 7     $transaction->commit();
 8 }
 9 catch(Exception $e) // 如果有一条查询失败,则会抛出异常
10 {
11     $transaction->rollBack();
12 }
13 $rows=$query->readAll();
14 print_r($rows);

 

 1 绑定参数
 2 // 一条带有两个占位符 ":username" 和 ":email"的 SQL
 3 $sql="INSERT INTO tbl_user (username, email) VALUES(:username,:email)";
 4 $db = \Yii::$app->db;
 5 $command=$db->createCommand($sql);
 6 // 用实际的用户名替换占位符 ":username" 
 7 $command->bindParam(":username",$username,PDO::PARAM_STR);
 8 // 用实际的 Email 替换占位符 ":email" 
 9 $command->bindParam(":email",$email,PDO::PARAM_STR);
10 $command->execute();
11 // 使用新的参数集插入另一行
12 $command->bindParam(":username",$username2,PDO::PARAM_STR);
13 $command->bindParam(":email",$email2,PDO::PARAM_STR);
14 $command->execute();

 

 1 绑定列
 2 $sql="SELECT username, email FROM tbl_user";
 3 $dataReader=$db->createCommand($sql)->query();
 4 // 使用 $username 变量绑定第一列 (username) 
 5 $dataReader->bindColumn(1,$username);
 6 // 使用 $email 变量绑定第二列 (email) 
 7 $dataReader->bindColumn(2,$email);
 8 while($dataReader->read()!==false)
 9 {
10     // $username 和 $email 含有当前行中的 username 和 email 
11 }

 

1 使用表前缀
2 配置:Connection::tablePrefix 
3 在 SQL 语句中使用 {{%TableName}}
4 $sql=‘SELECT * FROM {{user}}‘;
5 $users=$connection->createCommand($sql)->queryAll();

 

 





以上是关于yii2数据库操作DAO的主要内容,如果未能解决你的问题,请参考以下文章

如何将 DAO 查询转换为 Yii2 ActiveRecord。如何从连接表中选择和使用特定列

yii2 框架的 AR 和 DAO 增删改查

Yii2片段缓存详解

如何使用yii2的缓存依赖特性

Yii2学习笔记1--Yii2的基本介绍和Composer安装

隐藏 Yii2 GridView 操作按钮