yii2.0数据库查询修改等方法
yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作。
查询:(这里最前面的Test是引用的模型名)
Test::find()->all(); 此方法返回所有数据;
Test::findAll(['status'=>1]);
这些查询出来是对象形式,但是一般转换成数组格式:
Test::find()->asArray()->all(); 加上asArray()就取得数组形式的数据了,下面的自行添加。
Test::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子);
条件查询:where 、andwhere 、 orwhere
Test::find()->where(['name' => 小明'])->one(); 此方法返回 ['name' => '小明'] 的一条数据;
Test::find()->where(['name' => '小明'])->all(); 此方法返回 ['name' => '小明'] 的所有数据;
Test::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id'); 统计符合条件的总条数;
Test::find()->where(['and','id=1','id=2'])->all(); //id=1 and id=2
Test::find()->where(['or','id=1','id=2'])->all(); //id=1 or id=2
sql语句查询:
Test::findBySql('SELECT * FROM user')->all(); 此方法是用 sql 语句查询 user 表里面的所有数据;
Test::findBySql('SELECT * FROM user')->one(); 此方法是用 sql 语句查询 user 表里面的一条数据;
//查询一条数据
$sql =
"SELECT id,name FROM tbl_user WHERE email='123@qq.com' "
;
$users=Yii::app()->db->createCommand($sql)->queryRow();
其他辅助查询:
Test::find()->one(); 此方法返回一条数据;
Test::find()->all(); 此方法返回所有数据;
Test::find()->count(); 此方法返回记录的数量;
Test::find()->average(); 此方法返回指定列的平均值;
Test::find()->min(); 此方法返回指定列的最小值 ;
Test::find()->max(); 此方法返回指定列的最大值 ;
Test::find()->scalar(); 此方法返回值的第一行第一列的查询结果;
Test::find()->column(); 此方法返回查询结果中的第一列的值;
Test::find()->exists(); 此方法返回一个值指示是否包含查询结果的数据行;
Test::find()->batch(10); 每次取 10 条数据
Test::find()->each(10); 每次取 10 条数据, 迭代查询
支持防sql注入:
$result=Test::find()->where(['between','id',1,2])->all(); //查询 id 1-2 的
②
$users = Yii::app()->db->createCommand()
->
select
(
'*'
)
->
from
(
'tbl_user'
)
->queryAll();
删除操作:(delete)
$connection ->createCommand()
->delete('tbl_user', 'status = 0')
->execute();
④(使用sql删除)
$connection ->createCommand('DELETE FROM tbl_user WHERE userid=:userid')
->execute();
⑤(查找并删除)
$user = User::findOne(2); $user->delete();
// 输出语句
// DELETE FROM `tbl_user` WHERE `id`='2'
删除多个:deleteAll()
①
Test::deleteAll('status = :status AND age > :age', [':age' => 20, ':status' => 'active']); //DELETE FROM `tbl_user`where age>20 and status='active'
②
Test::deleteAll([ 'and', 'type = :type_id',['not in', 'usercategoryid', $categoriesList]],[ ':type_id' => 2]); //DELETE FROM `tbl_user` WHERE (type = 2) AND (`usercategoryid` NOT IN (1, 2, 3))
③Yii::app()->db->createCommand()->delete(
'tbl_user'
,
'id=:id'
,
array(
':id'
=> 2));
修改:(先查询后修改)
②
//修改
yii::$app->db->createCommand()->update('yii_company_info',
["company_name"=>$company_name,"company_desc"=>$company_desc],
"company_id=$company_id")->execute();
插入:
//使用user model添加数据
$user =
new
Users(); //先实例化model
$user->setAttributes(array(
'username'
=>
'user1'
,
'email'
=>
'123@qq.com'
,
'password'
=>md5(
"abcsd5a4"
),
'last_login'
=>time()
));
$user->save();
Yii::$app->db->createCommand()->insert(
'tbl_user'
,
array(
'username'
=>
'zhangsan'
,
'email'
=>
'zhangsan@zs.com'
))->execute();
注:本文由王智磊(王大宝儿)整理编写,也参考借鉴了很多大神的笔记,分享代码,分享成功,欢迎各位交流和转载,转载请注明出处(博客园:王大宝儿)http://www.cnblogs.com/wangzhilei/
yii2.0数据库查询修改等方法的更多相关文章
- [moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)
方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方 ...
- Yii2.0 数据库查询 [ 2.0 版本 ]
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- Yii2.0 数据库查询方法
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User:: ...
- Yii2.0数据库查询实例(三)
常用查询: // WHERE admin_id >= 10 LIMIT 0,10 User::find()->])->offset()->limit()->all() / ...
- Yii2.0数据库查询的一些简单的操作
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...
- yii2.0 数据库查询操作
User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User:: ...
- Yii2.0 Cookies机制和使用方法
在实际的项目开发过程中,用到了Yii2.0 Cookies机制!但是遇到一个十分奇葩的问题,同一个YII框架,backend下Cookies能够正常存储于客户端,但是frontend始终不行.文章的最 ...
- yii2.0 访问控制器下的方法时出现 Object Not Found! 解决办法
yii2.0 访问控制器下的方法时出现 Object Not Found! 时 可以查看(apache) 入口文件index.php 的同级有没有 .htaccess 文件 没有.htaccess ...
- YII2.0 数据库增删改查
/*==================== dkhBaseModel 数据库增删改查方法 start ================================*/ //新增一条数据 publ ...
随机推荐
- (转)Linux-HA开源软件Heartbeat(配置篇)
原文:http://ixdba.blog.51cto.com/2895551/548625 http://gzsamlee.blog.51cto.com/9976612/1828870 Linux-H ...
- ES6数组新加 Buff
欢迎关注本人公众号<迈向大前端>,里面有15本前端相关的电子书,送给在前端路上迷茫的同学们! 本章篇幅很长,分开来发,这一小篇主要讲ES6数组的Array.of()和Array.from( ...
- 用一个词(TASPK)牢记C程序内存布局
一个典型的C程序内存布局,从低地址到高地址分别为: 1. text (正文段,即代码段 Code Segment) 2. data (已经初始化的数据段) 3. bss (未被初始化的数据段 Bloc ...
- Hibernate一对多关系操作
1.创建两个实体类. 一个实体类是商品类,另一个实体类是商品的分类类. 在一对多关系的两个实体中,在编写实体类时必须要遵循以下规则: (1)在一的那一方的实体中,必须要有一个私有的多那一方的实体对象属 ...
- git忽略ssl认证
问题 在是用git克隆仓库的时候,报错如下: fatal: unable to access ‘https://github.com/........../‘: OpenSSL SSL_connect ...
- AtCoder Grand Contest 006 F - Blackout
Description 在 \(n*n\) 的棋盘上给出 \(m\) 个黑点,若 \((x,y)\),\((y,z)\) 都是黑点,那么 \((z,x)\) 也会变成黑点,求最后黑点的数量 题面 So ...
- 记一次走心One 2 One沟通
聊的比较零零碎碎,内容比较散,有些solution不错,记一些要点吧(1)要学会汇报,就是坐你身边的人,也未必知道你在干啥 三个人都在砌墙.当人们分别问他们在做什么,他们的答案却不一样:第一个人头也没 ...
- CSS学习(二)
display : block inline-block inline block此元素将显示为块级元素,此元素前后会带有换行符. inline默认.此元素会被显示为内联元素,元素前后 ...
- centos 同步网络时间
centos 同步网络时间 # yum -y install ntp ntpdate # ntpdate cn.pool.ntp.org # date
- SZU3
CodeForces 343A 这是第一题,像这种水题一定不要想复杂,思路不对立马换. 抓住串联和并联,可以用辗转相除法 #include <iostream> #include < ...