常用方法如下:
User::find()->all(); 此方法返回所有數(shù)據(jù)啥么;
User::findOne($id);? 此方法返回 主鍵 id=1? 的一條數(shù)據(jù)(舉個例子)肖油;
User::find()->where(['name' => '小伙兒'])->one();? 此方法返回 ['name' => '小伙兒'] 的一條數(shù)據(jù)辛萍;
User::find()->where(['name' => '小伙兒'])->all();? 此方法返回 ['name' => '小伙兒'] 的所有數(shù)據(jù);
User::find()->orderBy('id DESC')->all();? 此方法是排序查詢;
User::findBySql('SELECT * FROM user')->all();? 此方法是用 sql? 語句查詢 user 表里面的所有數(shù)據(jù);
User::findBySql('SELECT * FROM user')->one();? 此方法是用 sql? 語句查詢 user 表里面的一條數(shù)據(jù);
User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id');? 統(tǒng)計符合條件的總條數(shù)锅必;
User::find()->andFilterWhere(['like', 'name', '小伙兒']); 此方法是用 like 查詢 name 等于 小伙兒的 數(shù)據(jù)
User::find()->one();? ? 此方法返回一條數(shù)據(jù);
User::find()->all();? ? 此方法返回所有數(shù)據(jù)惕艳;
User::find()->count();? ? 此方法返回記錄的數(shù)量搞隐;
User::find()->average();? ? 此方法返回指定列的平均值;
User::find()->min();? ? 此方法返回指定列的最小值 尔艇;
User::find()->max();? ? 此方法返回指定列的最大值 尔许;
User::find()->scalar();? ? 此方法返回值的第一行第一列的查詢結(jié)果;
User::find()->column();? ? 此方法返回查詢結(jié)果中的第一列的值终娃;
User::find()->exists();? ? 此方法返回一個值指示是否包含查詢結(jié)果的數(shù)據(jù)行味廊;
User::find()->batch(10);? 每次取 10 條數(shù)據(jù)
User::find()->each(10);? 每次取 10 條數(shù)據(jù), 迭代查詢
Yii2查詢語句轉(zhuǎn)換為MySQL查詢語句的方法
$query->createCommand()->getRawSql()
實(shí)例:
$query = self::find()->joinWith([//yii2 query 方法
? ? 'homework',
? ? 'companyEmployee',
? ? 'records'
]);
$dataProvider = new? ActiveDataProvider([//分頁組件
? 'query' =>$query,
? ? 'pagination' => [
? ? ? ? 'pageSize' => $this->page_size
? ? ]
]);
$dataProvider->setSort([
? ? 'attributes'=>[
? ? ? ? 'id',
? ? ? ? 'view_count'
? ? ]
]);
$this->load($param);
$query->andFilterWhere([
? ? 'classes_homework.id'=>$this->homework_id
]);
$query->andFilterWhere([
? 'company_employee.id'? => $this->created_by
]);
$query->andFilterWhere([
? 'company_homework_assign_record.assign_id' => $this->id
]);
$query->andFilterWhere([
? ? 'or',
[
? ? ? ? 'like',
? ? ? ? 'classes_homework.homework_title',
? ? ? ? $this->homework_title
? ? ],
[
? ? ? ? 'like',
? ? ? ? 'company_employee.realname',
? ? ? ? $this->realname
? ? ]
]);
$query->andWhere([
? ? 'classes_homework.homework_status'=>1,
]);
$query->groupBy(['classes_homework_assign.id']);
$query->orderBy("classes_homework_assign.id desc");
$query->select(['count(IF(classes_homework_assign_record.homework_is_finish = 1,TRUE,NULL)) as finishnum',//4表聯(lián)查棠耕,統(tǒng)計一張表中已完成字段的數(shù)量
? ? 'COUNT(IF(classes_homework_assign_record.homework_is_comment = 0,TRUE,NULL)) as needRecord',
? ? 'classes_homework.homework_title',
? ? 'classes_homework_assign.homework_id',
? ? 'classes_homework_assign.classes_id',
? ? 'company_employee.realname',
? ? 'classes_homework_assign.finish_count',
? ? 'classes_homework_assign.assign_count',
? ? 'classes_homework_assign.id',
? ? 'classes_homework_assign.created_at']);
return $dataProvider;
除 分頁部分余佛,對應(yīng)的sql語句如下所示:
SELECT
count(IF(d.homework_is_finish = 1,TRUE,NULL)) as finishnum,
COUNT(IF(d.homework_is_comment = 0,TRUE,NULL)) as needRecord,
b.homework_title,
c.realname,
a.finish_count,
a.assign_count,
a.id as assign_id,
a.classes_id,
d.homework_id,
a.created_at
FROM classes_homework_assign a
LEFT JOIN classes_homework b ON a.homework_id = b.id
LEFT JOIN company_employee c ON a.created_by= c.id
LEFT JOIN classes_homework_assign_record d ON a.id = d.assign_id
WHERE b.homework_status=1 AND a.classes_id = 217
GROUP BY a.id
ORDER BY a.id DESC