yii2mysqlupdate_Yii2数据库增删改查(CURD)操作### 概括
- 1、Model类的CURD
- 2、yii\db\Query类的查询数据
- 3、Yii::$app->db的CURD操作
------------
以下例⼦均使⽤ \app\models\User 模型、user表为例;
### 1.ActiveRecord的Model类的CURD操作
#### 1.1 查询操作 findAll()、findOne()、find()
> 1.1.1 findAll(whereArray)
参数where条件必需传数组,空数组则返回结果也为空
正确返回结果为⼀个数组对象
sql2000另一个安装程序实例已在运行```php
$dataObj = User::findAll(['sex' => 1]); //返回性别为1的数据数组
```
> 1.1.2 findOne(int[whereArray])
参数可以为主键 或 条件数组
返回数据结果集的第⼀条数据
```php
$firsrtDataObj = User::findOne(['sex' => 1]); //返回性别为1的第⼀条数据对象
$idDataObj = User::findOne(22); //返回主键为22的数据对象
```
> 1.1.3 find() 连接查询
⼀般结合where()和one()或者all() 查询
```php
$manyWhereDataObj = User::find()->select('name')->where('id >:id AND sex=:sex', ['id'=>1, 'sex'=>1])->orderBy('id DESC')->offset(5)->limit(3)->all();
//返回id>1,sex=1 按照id降序,偏移量5的3条数据,只返回name字段的数组对象
```
PS: all() 或者 one() 不可少,否则返回的是对象,不包含数据
PS: 单条件同上
> 1.1.4 打印原始SQL
打印find()的SQL语句:
$findObj = User::find()->select('name');
$sql = $findObj->createCommand()->getRawSql();
var_dump($sql);//打印SQL
$dataObj = $findObj->all();
```
#### 1.2 更新操作 save()、updateAll()
> 1.2.1 save() 更新⼀条数据
```php
$userObj = User::findOne(1);
$userObj->name = '新名称';
$boolVal = $userObj->save(); //更新成功 返回 true
```
> 1.2.2 updateAll('更新的属性', '条件') 更新多条数据mysql菜鸟教程增删改查
返回结果,受影响的记录数
二手交易平台app源码```php
$updateRaw = updateAll(['name'=>'新名称'], ['sex'=>1]); //更新所有sex=1的数据的name字段```
#### 1.3 添加数据 save()
```php
save() 添加⼀条
返回结果,Bool值
$UserObj = new User();
$UserObj->name = '11';
$UserObj->email = '112@qq';
$UserObj->save();
```
onjava电子书> 1.3.1 获取新增数据的主键
```php
$id = $UserObj->attributes['id'];
```
#### 1.4 删除操作 delete()、deleteAll()
> 1.4.1 delete() 删除单条
返回受影响的记录数
$User::findOne(3)->delete();
```
> 1.4.2 deleteAll() 删除符合条件地数据
返回受影响的记录数
```php
$deleteRaw = User::deleteAll('name =:name AND id>:id', ['name' => '张三', 'id' => 10]);
//删除name为张三,id⼤于10的数据
```
PS: 单条件可以 User::deleteAll(['name'=>'张三']);
### 2.yii\db\Query类的查询数据操作
#### 2.1 ⽅法
基本⽅法 如下:
select():选择查询字段
from():查询表
where():查询条件
orderBy():排序字段规则
one():返回结果集的第⼀条
all():返回结果集的所有数据
offset():偏移量
limit():数据量
count():结果集数量,返回的为int数值
#### 2.2 使⽤
例⼦:php表单制作
```php
$db = new yii\db\Query();
/
footer标签有什么用
/PS: 可以打印SQL
$dbObj = $db->select('name, (id+1) AS newId')->from('user')->orderBy('name DESC, id DESC'); $sql = $dbObj->createCommand()->getRawSql();
$dataArray = $dbObj->all(); //返回结果集 为数组
```
### 3.Yii::$app->db的原⽣SQL的CURD操作
直接使⽤配置⽂件的components节点下的db配置项信息进⾏操作
#### 3.1 查询数据 createCommand()、queryOne()、bindValue()、queryAll()、queryScalar()
查询多条 queryAll()
queryScalar() 查询⼀条的第⼀个select字段,⼀般⽤于查询count(1),//返回第⼀条的第⼀个字段的值
> 3.1.1 ⽰例⼀
```php
$db = Yii::$app->db;
//例⼦ 单个参数 bindValue
$dataArray = $db->createCommand('Select * from user where id>:id')->bindValue(':id', 1)->queryOne();
//例⼦ 多个参数 bindValues
$dataArray2 = $db->createCommand('Select * from user where id>:id AND name = :name')->bindValues([':id'=>1, ':name'=>'张三'])->queryOne();
```
> 3.1.2 ⽰例⼆
```php
$db = Yii::$app->db;
//例⼦ 单个参数 bindValue
$dataArray = $db->createCommand('Select * from user where id>:id')->bindValue(':id', 1)->queryAll();
//例⼦ 多个参数 bindValues
$dataArray2 = $db->createCommand('Select * from user where id>:id AND name = :name')->bindValues([':id'=>1, ':name'=>'张三'])->queryAll();
```
> 3.1.3 ⽰例三
```php
$db = Yii::$app->db;
//例⼦ 单个参数 bindValue
$dataTotal = $db->createCommand('Select count(1) from user where id>:id')->bindValue(':id', 1)->queryScalar();
```
#### 3.2 更新数据 createCommand()、update()、execute()
```php
$db = Yii::$app->db;
$updateRaw = $db->createCommand()->update('user', ['name'=>'张三'], 'id>:id AND name=:name', ['id'=>10, 'name'=>'张三'])-
>execute();
```
#### 3.3 新增数据 createCommand()、insert()、execute()
```php
$insertRaw = $db->createCommand()->insert('user',['name'=>'赵六'])->execute();
```
> 3.3.1 获取新增数据的主键
```php
$id = $db->getLastInsertID();
```
#### 3.4 删除数据 createCommand()、delete()、execute()
```php
$deleteRaw = $db->createCommand()->delete('user','id8, 'name'=>'张三'])->execute(); ```
------------
### 总结
- 1、Model类的CURD
- 2、yii\db\Query类的查询数据
-
3、Yii::$app->db的CURD操作
------------
the End.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论