Yii2数据库操作增删改查Query Builder
- 9210
- PHP
- 0
- super_dodo
- 2015/11/14
数据库操作增删改查Yii2为我们提供了非常丰富的查询详细的可以到官方文档处查看浏览
User::find()->all(); //此方法返回所有数据; User::find()->one(); //此方法返回一条数据; 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 条数据, 迭代查询 User::findOne($id); //此方法返回 主键 id=1 的一条数据(举个例子); User::find()->where(['name' => 'dodobook'])->one(); //此方法返回 ['name' => 'dodobook'] 的一条数据; User::find()->where(['name' => 'dodobook'])->all(); //此方法返回 ['name' => 'dodobook'] 的所有数据; User::find()->select('id,name')->where("status=1")->all(); //此方法为Yii2 查询指定字段 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'); //统计符合条件的总条数; //推荐使用asArray()这个函数,这样不仅会方便我们在Views中的输出,也在一定程度上节约了内存 $posts = Post::find()->asArray()->all(); //LIKE查询 MemberList::find()->andFilterWhere(['like','name','新']); //orderby 查询 MemberList::find()->OrderBy(['date'=>SORT_DESC]); //按主键id查询 MemberList::findOne($id); // 多条件查询 MemberList::find()->where(['name'=>'小洋'])->andWhere(['age'=>24])->all(); //查询返回全部 // ->one() 查询1个结果 // ->count() 获取数量 //多表联查 $model=new MemberList(); $model->fiind()->join('LEFT JOIN','student','student.cid=customer.id') ->where('student.id'=>\Yii::$app->user->id) ->andwhere('is_ok=1') ->one(); //修改 MemberList::updateAll(['age'=>24],['age'=>18]); //将所有年龄为24的 修改为年龄 18 //删除 $model = GoodsList::findOne(23); $model->delete(); MemberList::deleteAll('age > :age AND sex = :sex', [':age' => 20, ':sex' => '1']); GoodsList::deleteAll(" status='2'");
一些常用的语句,请按照需要修改(SELECT\FROM\WHERE\ADD WHERE\FILTER WHERE\ORDER BY\GROUP BY\HAVING\LIMIT OR OFFSET\JOIN\UNION\QUERY METHODS\QUERY RESULTS\INDEXING...)
$rows = (new \yii\db\Query()) ->select(['dyn_id', 'dyn_name']) ->from('zs_dynasty') ->where(['between','dyn_id', 1,30]) ->limit(10) ->all(); use yii\db\Query; $query = (new Query())->from('user') ->orderBy('id'); $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()-> $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'); // SELECT * FROM (SELECT `id` FROM `user` WHERE status=1) u $query->from(['u' => $subQuery]); where('status=1')-> where('status=:status', [':status' => $status])-> where(['status' => 10,'type' => null,'id' => [4, 8, 15],])-> $userQuery = (new Query())->select('id')->from('user'); // ...WHERE `id` IN (SELECT `id` FROM `user`) $query->...->where(['id' => $userQuery])->... ['and', 'id=1', 'id=2'] //id=1 AND id=2 ['and', 'type=1', ['or', 'id=1', 'id=2']] //type=1 AND (id=1 OR id=2) ['between', 'id', 1, 10] //id BETWEEN 1 AND 10 ['not between', 'id', 1, 10] //not id BETWEEN 1 AND 10 ['in', 'id', [1, 2, 3]] //id IN (1, 2, 3) ['not in', 'id', [1, 2, 3]] //not id IN (1, 2, 3) ['like', 'name', 'tester'] //name LIKE '%tester%' ['like', 'name', ['test', 'sample']] //name LIKE '%test%' AND name LIKE '%sample%' ['not like', 'name', ['or', 'test', 'sample']] //not name LIKE '%test%' OR not name LIKE '%sample%' ['exists','id', $userQuery] //EXISTS (sub-query) | not exists ['>', 'age', 10] //age>10 $status = 10; $search = 'yii'; $query->where(['status' => $status]); if (!empty($search)) { $query->andWhere(['like', 'title', $search]); } //WHERE (`status` = 10) AND (`title` LIKE '%yii%') //andWhere() or orWhere() $query->filterWhere(['username' => $username,'email' => $email,]); //如果email为空,则 WHERE username=:username $query->orderBy([ 'id' => SORT_ASC,'name' => SORT_DESC,]); //orderBy , addOrderBy $query->groupBy('id, status'); $query->addGroupBy(['created_at', 'updated_at']); $query->having(['status' => $status]); //having,andHaving,orHaving $query->limit(10); $query->offset(10); $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'); $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); $count = (new \yii\db\Query())->from('user')->where(['last_name' => 'dodo'])->count(); //SELECT COUNT(*) FROM `user` WHERE `last_name`=:last_name $command = (new \yii\db\Query())->select(['id', 'email'])->from('user')->where(['last_name' => 'dodo'])->limit(10)->createCommand(); // show the SQL statement echo $command->sql; // show the parameters to be bound print_r($command->params); // returns all rows of the query result $rows = $command->queryAll(); use yii\db\Query; $query = (new Query())->from('user')->indexBy('username'); foreach ($query->batch() as $users) { // $users is indexed by the "username" column } foreach ($query->each() as $username => $user) { } use yii\db\Query; $query = (new Query())->from('user')->orderBy('id'); foreach ($query->batch() as $users) { // batch( $batchSize = 10, $db = null ) // 一个批次取100行 } foreach ($query->each() as $user) { // 一行一行取 }
心有猛虎,细嗅蔷薇~~
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例