Query Builder
- $rows = (new \yii\db\Query())
- ->select([‘dyn_id‘, ‘dyn_name‘])
- ->from(‘zs_dynasty‘)
- ->where([‘between‘,‘dyn_id‘, 1,30])
- ->limit(10)
- ->all();
- print_r($rows);
- use yii\db\Query;
- $query = (new Query())
- ->from(‘user‘)
- ->orderBy(‘id‘);
SELECT
- $query->select(‘*‘)->
- select(‘dyn_id as id, dynasty.dyn_name‘)->
- $query->select([‘dyn_id as id‘, "CONCAT(dyn_name,‘a‘)"])->
- $query->select(‘user_id‘)->distinct()->
FORM
- $query->from(‘user‘);
- $query->from([‘public.user u‘, ‘public.post p‘]);
- $query->from(‘public.user u, public.post p‘);
- $query->from([‘u‘ => ‘public.user‘, ‘p‘ => ‘public.post‘]);
- ----------
- $subQuery = (new Query())->select(‘id‘)->from(‘user‘)->where(‘status=1‘);
- $query->from([‘u‘ => $subQuery]);
WHERE
- where(‘status=1‘)->
- where(‘status=:status‘, [‘:status‘ => $status])->
- where([
- ‘status‘ => 10,
- ‘type‘ => null,
- ‘id‘ => [4, 8, 15],
- ])->
- -------
- $userQuery = (new Query())->select(‘id‘)->from(‘user‘);
- $query->...->where([‘id‘ => $userQuery])->...
- --------
- [‘and‘, ‘id=1‘, ‘id=2‘]
- [‘and‘, ‘type=1‘, [‘or‘, ‘id=1‘, ‘id=2‘]]
- [‘between‘, ‘id‘, 1, 10]
- [‘not between‘, ‘id‘, 1, 10]
- [‘in‘, ‘id‘, [1, 2, 3]]
- [‘not in‘, ‘id‘, [1, 2, 3]]
- [‘like‘, ‘name‘, ‘tester‘]
- [‘like‘, ‘name‘, [‘test‘, ‘sample‘]]
- [‘not like‘, ‘name‘, [‘or‘, ‘test‘, ‘sample‘]]
- [‘exists‘,‘id‘, $userQuery]
- [‘>‘, ‘age‘, 10]
ADD WHERE
- $status = 10;
- $search = ‘yii‘;
- $query->where([‘status‘ => $status]);
- if (!empty($search)) {
- $query->andWhere([‘like‘, ‘title‘, $search]);
- }
FILTER WHERE
- $query->filterWhere([
- ‘username‘ => $username,
- ‘email‘ => $email,
- ]);
ORDER BY
- $query->orderBy([
- ‘id‘ => SORT_ASC,
- ‘name‘ => SORT_DESC,
- ]);
GROUP BY
- $query->groupBy(‘id, status‘);
- $query->addGroupBy([‘created_at‘, ‘updated_at‘]);
HAVING
- $query->having([‘status‘ => $status]);
LIMIT OR OFFSET
- $query->limit(10);
- $query->offset(10);
JOIN
- innerJoin()
- leftJoin()
- rightJoin()
- $query->select([‘user.name AS author‘, ‘post.title as title‘])
- ->from(‘user‘)
- ->leftJoin(‘post‘, ‘post.user_id = user.id‘);
- $query->join(‘FULL OUTER JOIN‘, ‘post‘, ‘post.user_id = user.id‘);
- $query->leftJoin([‘u‘ => $subQuery], ‘u.id=author_id‘);
UNION
- $query = new Query();
- $query->select("id, category_id as type, name")->from(‘post‘)->limit(10);
- $anotherQuery = new Query();
- $anotherQuery->select(‘id, type, name‘)->from(‘user‘)->limit(10);
- $query->union($anotherQuery);
QUERY METHODS
- all() //所有行列
- one() //第一行
- column() //第一列
- scalar() //第一行第一列
- exists() //是否有结果存在
- count() //记录数量
- sum($q), average($q), max($q), min($q) //$q 为字段或表达式
- $count = (new \yii\db\Query())
- ->from(‘user‘)
- ->where([‘last_name‘ => ‘Smith‘])
- ->count();
-
-
- $command = (new \yii\db\Query())
- ->select([‘id‘, ‘email‘])
- ->from(‘user‘)
- ->where([‘last_name‘ => ‘Smith‘])
- ->limit(10)
- ->createCommand();
-
- echo $command->sql;
- print_r($command->params);
-
-
- $rows = $command->queryAll();
QUERY RESULTS
- use yii\db\Query;
- $query = (new Query())
- ->from(‘user‘)
- ->indexBy(‘username‘);
- foreach ($query->batch() as $users) {
-
- }
- foreach ($query->each() as $username => $user) {
- }
INDEXING
- use yii\db\Query;
- $query = (new Query())
- ->from(‘user‘)
- ->orderBy(‘id‘);
- foreach ($query->batch() as $users) {
-
-
- }
- foreach ($query->each() as $user) {
-
- }
yii2 查询构建器
原文:http://www.cnblogs.com/peteremperor/p/6993146.html