Yii 2.0 数据库查询 [ 2.0 版本 ]
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作
User::find()->all(); 此方法返回所有数据;
User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子);
User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据;
User::find()->where(['name' => '小伙儿'])->all(); 此方法返回 ['name' => '小伙儿'] 的所有数据;
User::find()->orderBy('id DESC')->all(); 此方法是排序查询;
User::findBySql('SELECT * FROM user')->all(); 此方法是用 sql 语句查询 user 表里面的所有数据;
User::findBySql('SELECT * FROM user')->one(); 此方法是用 sql 语句查询 user 表里面的一条数据;
User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id'); 统计符合条件的总条数;
User::find()->andFilterWhere(['like', 'name', '小伙儿']); 此方法是用 like 查询 name 等于 小伙儿的 数据
User::find()->one(); 此方法返回一条数据;
User::find()->all(); 此方法返回所有数据;
User::find()->count(); 此方法返回记录的数量;
User::find()->average(); 此方法返回指定列的平均值;
User::find()->min(); 此方法返回指定列的最小值 ;
User::find()->max(); 此方法返回指定列的最大值 ;
User::find()->scalar(); 此方法返回值的第一行第一列的查询结果;
User::find()->column(); 此方法返回查询结果中的第一列的值;
User::find()->exists(); 此方法返回一个值指示是否包含查询结果的数据行;
User::find()->batch(10); 每次取 10 条数据
User::find()->each(10); 每次取 10 条数据, 迭代查询
Yii 为我们提供了非常丰富的查询,在这里小伙儿不一一列举了,下面是 api 链接,预知更多,请点击观看(点击 db 菜单即可)
Yii 查询数据库
小伙儿 陕西省
注册时间:2014-08-18
最后登录:2020-06-03
在线时长:295小时3分
最后登录:2020-06-03
在线时长:295小时3分
- 粉丝272
- 金钱2077
- 威望175
- 积分6777
共 33 条评论
此文写的不错,总结的很全面,排版也很好,如果把原文链接去掉,堪称完美。
完美无缺,哈哈哈
我比较赞成保留原文链接~
@Ricky_nie: 嘿嘿嘿
@Ricky_nie: 根据小伙儿这货的尿性,原文估计是英文的,这货翻译了放到新浪博客然后又给拖到这里来了。
@胖纸囧: 哈哈哈 分析的有点道理
可惜没有batch
@三杯蛙
谢谢分享谢谢分享谢谢分享
不客气不客气
再加个排序查询就OK了!
恩 谢谢提醒 已经加上了 再次表示感谢
在下小白,膜拜大神,
类似
$criteria->addCondition()
...这样的追加条件怎么写?没有排序查询。。。。。。。。。
已经补上了,谢谢指正
顶,顶,顶,顶
希望你总结点连表查询的语句
排序的方法:
$customers = Customer::find()->where(['status' => 1])->orderBy('age desc')->all();
同求表连接查询的方法
这个也是有文章的 可以看一下我以前写过的 关联查询 谢谢
@小伙儿 赞
加个标签!!!!!!!!!!!!!!!!!!!!!!!!
标签内容是???????
@小伙儿
T^T楼主分享,文档上根本没有这么全面,新手的福利T^T
对你们有帮助就行
nice,谢谢
请教下:我用这个
User::find()->count();
为什么不行捏。报错:
Unknown Method – yii\base\UnknownMethodException Calling unknown method: app\models\user::count()
是缺了什么配置吗?
用
User::find()->where(['UserTel'=>$tel])->one();
这些是ok的。····························
不赖!谢谢楼主!
应该做的 不用客气
为什么我这样不能更新啊
$model=new Site(); if($model->load(Yii::$app->request->post()) && $model->validate()){ $id=1; $site=Site::findOne($id); $site->title='123'; var_dump($site); $site->save(); }
$site=Site::findOne($id);
用的不是
$model=new Site();
$model = Site::findOne($id); if($model->load(Yii::$app->request->post()) && $model->validate()){ $site->title='123'; $site->save(); }
这样就行了
@小伙儿
那如何查询指定字段的方法呢。如果不用findbysql的话
你现在解决了除了findbysql 查询 指定字段的方法吗?
@asialong 他有一个select() function,参数是由字段名组成的索引数组。
@飘逸 呵呵,早就解决了
@jj_jameholl dfasdf
谢谢 大神总结!
可是 where 里 大于小于怎么表示? ->where(['le'=>'>0']) 无效
where(['>', '字段名', '值'])
可是 where 里 大于小于怎么表示?
->where(['le'=>'>0'])
无效where('le > :le',[':le' => '0'])
@潘氏_ 那不等于呢where('le != :le',[':le' => '0']) ?
重复提交,已经隐藏
adsfas