YII2.0 常用查询语句
2015-12-19 09:06
645 查看
本文主要说说一些基本的查询语句:
1.首先理解以下三个的返回类型:
2.下面详细说一些常用的查询:
2.1.查询单条用户记录:
2.2. 查询单列数据
2.3.查询多列
4000
数据
2.4.查询多条记录:
2.5.关联查询
2.6.DataProvider查询
这个查询比较重要,即在程序中,使用方式有两种:
其一是实例化一个ActiveDataProvider类;
其二是生成相关模型的search类,将它作为所有查询的入口;
1.首先理解以下三个的返回类型:
find() 返回值是一个ActiveQuery()对象 hasOne() 与 hasMany() 返回值是 yii\db\ActiveQuery instance ActiveDataProvider 返回的值是 yii\db\ActiveQuery instance
2.下面详细说一些常用的查询:
2.1.查询单条用户记录:
findOne() 与 find()->where()的区别 前者根据条件查询一条记录,后者根据条件查询一条或多条记录 前者的参数可以是主键,或键值对,后者参数必须是键值对。因此: User::findOne($id); 等价于 User::findOne(['id' => $id]); 等价于 User::find()->where(['id' => $id])->one(); 等价于 User::findBySql('SELECT * FROM user')->one(); //这个查询不完全等同于以上三个
2.2. 查询单列数据
#查询一列,返回对象数组 User::find()->select('id')->all(); array(1) { [0]=> object(common\models\User)#116 (8) { ["_attributes":"yii\db\BaseActiveRecord":private]=> array(1) { ["id"]=> int(1) } #查询一列,返回数组 User::find()->select('id')->asArray()->all(); array(1) { [0]=> array(1) { ["id"]=> string(1) "1" } } #查询一列之和 User::find()->select('salary')->sum('salary');
2.3.查询多列
4000
数据
/*query查询*/ $query = (new \yii\db\Query()) ->select('id, name') ->from('user') ->limit(10); /*ActiveRecord查询*/ User::find()->select('username,email')->one(); #返回结果是对象,如下: object(common\models\User)#116 (8) { ["_attributes":"yii\db\BaseActiveRecord":private]=> array(2) { ["username"]=> string(4) "jack" ["email"]=> string(16) "986994@qq.com" } 获取数据为,$user->username, $user->email
2.4.查询多条记录:
/*返回所有记录*/ User::find()->all();
/*查询满足条件 [单个条件,多个条件] 的多条记录*/ User::find()->where(['sex' => 'male'])->all();
/*统计查询,在查询后加count方法,统计查询结果中的记录数量*/ User::find()->count();
/*排序查询,根据id查询一条最新注册的用户记录*/ User::find()->orderby(['id' => SORT_DESC, 'created_at' => SORT_DESC]);
2.5.关联查询
/*包含中间表的1:n查询*/ public function getLectures() { return $this->hasMany(VLecture::className(), ['section_id' => 'id'])->viaTable('vw_section', ['course_id' => 'id']); } /* 1:n 查询*/ public function getTeachs(){ return $this->hasMany(VCourseTeach::className(), ['course_id' => 'id']); } /* 1:1 查询*/ public function getCategory() { return $this->hasOne(VCategory::className(), ['id' => 'category_id']); }
2.6.DataProvider查询
这个查询比较重要,即在程序中,使用方式有两种:
其一是实例化一个ActiveDataProvider类;
其二是生成相关模型的search类,将它作为所有查询的入口;
public function getSupporters(){ $dataProvider = new ActiveDataProvider([ 'query' =>VCrowdfundSupport::find()->where(['crowdfund_id' => $this->id]), ]); $dataProvider->sort = ['defaultOrder' => ['created_at' => SORT_DESC]]; $dataProvider->pagination->pageSize = 9; return $dataProvider; }
相关文章推荐
- Search Engine XSS Worm
- 整理MySql常用查询语句(23种)
- 50条SQL查询技巧、查询语句示例
- 如何设计高效合理的MySQL查询语句
- 简介JavaScript中search()方法的使用
- oracle查询语句大全(oracle 基本命令大全一)
- js闭包实现按秒计数
- mysql查询语句通过limit来限制查询的行数
- 向大家推荐一个收集整理正则表达式的网站
- Js&Vbs正则表达式替换重复的字符
- 限制文本框中只能输入实数或整数,其它字符无效,有劳大家了!
- 关于IE的RegExp.exec的问题
- 最严谨的校验email地址的正则表达式及各种语言对应版
- Google Map Api和GOOGLE Search Api整合实现代码
- javascript中的window.location.search方法简介
- 基于mysql查询语句的使用详解
- 使用javaScript动态加载Js文件和Css文件
- 45个非常有用的 Oracle 查询语句小结
- oracle数据库常用的99条查询语句
- 教你使用javascript简单写一个页面模板引擎