YII2框架中查询生成器Query()的使用方法示例_php实例

来源:脚本之家  责任编辑:小易  

视图 中用<?= $post['id'] ?>

本文实例讲述了YII2框架中查询生成器Query()的使用方法。分享给大家供大家参考,具体如下:

通用:use yii\db\Query; $query = new Query();

YII2中的yii\db\Query给我们提供了非常丰富的方法,方便我们构建复杂的SQL语句。

代码都做了注释了。// 一次性批量获取10条记录foreach (Customer::find(

Query()与createCommand最大区别在于,后者直接使用我们写好的SQL语句,前者通过参数和数据库类型生成不同SQL,迁移性更好。

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 数据库 php y

<?php namespace app\controllers; use YII; use yii\db\Query; use yii\web\Controller; class TestController extends Controller { public function actionTest() { //YII2的Query的使用 //Query与createCommand的区别是createCommand是直接写一个SQL来执行。 //Query是根据参数和数据库类型生成不同的SQL,提升数据库可迁移性。 //通过all查询多条记录 //我这里用tb_user表来进行演示 $data1 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->all(); //指定where条件查询 $data2 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where('id=:id', [':id' => '2']) ->all(); //通过one查询单条记录 $data3 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where('id=3') ->one(); //判断记录是否存在 $exists = (new Query())->from('{{%user}}') ->where('name="aaa"') ->exists(); if ($exists) { echo 'name=aaa 存在'; } //定义字段别名 //注意真实的字段名写后面,别名写前面 $data4 = (new Query())->select(['ids' => 'id', 'names' => 'name']) ->from('{{%user}}') ->where('1=1') ->all(); //通过orderby排序,和limit限制条数 $data5 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where('1=1') ->orderBy('id desc') ->limit(3) ->all(); //多个and条件 //参数是数组,一个key对应一个value,默认以and拼接 $data6 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['id' => 3, 'name' => 'aaa']) ->one(); //in条件 $data7 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['id' => [4, 5, 6]]) ->all(); //或者如下方式 $data7_2 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['in', 'id', [4, 5, 6]]) ->all(); //count统计 $count = (new Query())->from('{{%user}}')->count(); echo '总记录数: ', $count; //大于,大于等于,小于,小于等于where条件 $data8 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['>=', 'id', 5]) ->all(); $data9 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['<=', 'id', 3]) ->all(); //like查询 $data10 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['like', 'name', 'dd']) ->all(); //between筛选和group by分组 //查找出age在18到24之间的,并按sex分组 $data11 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['between', 'age', 18, 24]) ->groupBy('sex') ->all(); //having筛选 //按sex分组,然后统计人数大于3的 $data12 = (new Query())->select(['sex', 'cnt' => 'count(*)']) ->from('{{%user}}') ->groupBy('sex') ->having('cnt > 3') ->all(); //or逻辑条件 //查找姓名为aaa或bbb的用户 //之前where数组是以key=>value方式传递的,如果要表达复杂逻辑关系, //数组第一个元素必须声明是什么逻辑,and还是or //第二个元素表示逻辑左边 //第三个元素表示逻辑右边 $data13 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['or', ['name' => 'aaa'], ['name' => 'bbb']]) ->all(); //复杂的where条件 //我这里只是作为演示 //SELECT `id`, `name` FROM `tb_user` WHERE ((`name`='aaa') OR (`name`='bbb')) OR ((`name`='ccc') OR (`name`='ddd')) $data14 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where([ 'or', [ 'or', ['name' => 'aaa'], ['name' => 'bbb'], ], [ 'or', ['name' => 'ccc'], ['name' => 'ddd'], ], ]) ->all(); //and和or嵌套where条件 //SELECT `id`, `name` FROM `tb_user` WHERE (`sex`=1) AND ((`name` LIKE '%aa%') OR (`name` LIKE '%bb%')) $data15 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where([ 'and', ['sex' => 1], [ 'or', ['like', 'name', 'aa'], ['like', 'name', 'bb'], ], ]) ->all(); //有些时候我们需要根据用户传递过来的参数追加where条件 //追加and条件 $query = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where('sex=1'); //追加age大于18的条件 $query->andWhere(['>', 'age', 18]); echo $query->createCommand()->getRawSql(); //追加or条件 $query2 = (new Query())->select(['id', 'name']) ->from('{{%user}}') ->where(['like', 'name', 'aa']); //追加name相似bb的条件 $query2->orWhere(['like', 'name', 'bb']); echo $query2->createCommand()->getRawSql(); //表别名和连接查询 //SELECT `u`.`id`, `u`.`name`, `aa`.`item_name` FROM `tb_user` `u` LEFT JOIN `tb_auth_assignment` `aa` ON aa.user_id = u.id $data16 = (new Query())->select(['u.id', 'u.name', 'aa.item_name']) ->from(['u' => '{{%user}}']) ->leftJoin(['aa' => '{{%auth_assignment}}'], 'aa.user_id = u.id') ->all(); } }

也可直接点“搜索资料”搜索整个问题。 yii2 框架 php gd 图片 搜索资料 本地图片 图片

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

大概从《红高粱》《芈月传》《明妃传》开始原先名不见经传的文艺小生黄轩开始走进大众视野2017年到达顶峰《芳华》《妖猫传》一时风头无二只是名利场的娱乐圈又怎么会有随随便便的成功又怎么会仅仅因为演技好就能出头毕竟演技好的人太多关键还是靠“贵人”相帮尽管现在红了的黄轩从不承认但蒋雯丽绝对是不能不提的存在如果没有认识蒋雯丽很难说还有没有观众所熟识的黄轩1蒋雯丽是国内很有风情与气质的中年女星她的成名作是《霸王别姬》里面她只有很少的戏份演张国荣小时候的妈妈两分钟的戏被她演得活灵活现也就是在这部电影里蒋雯丽认识了大她12岁的老公顾长卫顾长卫当时是《霸王别姬》的摄影当时两人闪婚而顾长卫的长相即便是在导演里也是

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

谢谢邀请!性格本身没有好坏,如果你认为自己有调整的必要,那我可以提三点建议:一、自己最了解自己,告诉自己你是什么样子的人,你是否和谁都很闷,没有任何事情让你变的活跃健谈?如果这个问题的答案是肯定的,你就是一个内向的人,你再问问自己对自己的这种状态感觉不适吗?舒服吗?如果你觉得这样很自然也很舒服,不要逼迫自己去改变,变成一个表面健谈活跃的人,不会是你的初衷,你也不会感到开心,做自己最好。二、想想什么事情让你最开心,你的爱好是什么?在做喜欢做的事情时候你是否变的主动健谈?如果是,那就在相亲的时候把话题引导到自己感兴趣的领域,让对方看到你的另一面,这样的你说不定也是她喜欢的。三、不管一个人性格开朗与

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

PHP中使用YII框架的问题

因为你Users Model的对应的表明没改,在这个Users模型类里,有这样的方法:

public static function tableName()

{

return '{{%users1}}'; // users1是你的新表名

}

而且直接执行Sql查询,好像不是这样用的吧?

我一般都是这样的

Yii::$app->getDb()->createCommand($sql)->queryAll()

Yii::$app->getDb()->createCommand($sql)->queryOne()

Yii::$app->getDb()->createCommand($sql)->excute()

....

区别你可以看看源代码的说明。(Yii2上的用法,yii1.x应该差不多,你稍微改改就应该没问题)更多追问追答追问好像明白点了,Users类的表名应该怎么改呢?这个文件在哪里?UsersModel是我自己建的类,里面方法为空。追答这个放的地方一般在models这个目录下,文件名应该就叫Users

一般用编辑器就可以追踪到了,比如netbeans的按CTRL+B就可以打开对应的文件追问我实在不知道users模型是如何把表名users记住的,甚到把框架文件全部替换为新的框架文件,再重建上述users模型和indexController查询users1,结果依然是查询users表.追答我上面已经说了,这个方法定义了模型对应的数据表

public static function tableName(){}

如果要研究个明白,可以看看框架源代码

$this->db->query($sql) 在一些php框架中,这种方式是怎么实现

把db->query($sql)看作一个整体。。 ,在当前类中防问这个整体 ,db没被继承,但在当前类中实例化了。追问哦,有点明白了,谢谢了!,还有一种我也想不明白的,就是像这样的:

$this->db->get('mytable')->result();这样就可以得到一个对象结果集了,那像这样又多了个->result();又是怎么样做到的,再次麻烦这位大哥一下。。。追答result()应该是get()所在类的一个成员。在当前类中先防问db->get('mytable'),然后再-执行result();

get是一个过程,result才是结果

PHP Yii2开发框架有什么优势好处

Yii容易学习和使用。只需要知道PHP和面向对象编程,便可以很快上手,而不必事先去学习一种新的架构或者模板语言。

用Yii的开发速度非常之快,除框架本身之外,需要为应用所写的编码极少。造就了Yii是最高效的开发框架之一。

Yii 具有高度的可重用性和可扩展性,是纯粹的面向对象。Yii中的一切都是独立的可被配置,可重用,可扩展的组件。更重要的是Yii有着越来越多的扩展库。主要由使用者贡献出的组件组成,这可能有助于大大减少开发时间。

Yii 有着丰富的功能,从MVC, DAO/ActiveRecord, 到主题化, 国际化和本地化, Yii 提供了几乎所有今天的Web 2.0应用程序开发所需的功能。

Yii参考手册是Yii完备的文档,有着学习和掌握它所需要的任何资料和信息。

Yii一开始就精心设计,以适应复杂的Web应用开发。它不是某个项目的副产品或者第三方集成。而是融合了作者丰富的Web应用开发经验和其它热门 Web 框架和应用的优秀思想的结晶。

最后,重要的一点:Yii是免费的,Yii遵循最新的BSD许可。它确保了它的第三方开发也循序和BSD相兼容的许可。这意味着无论从法律上还是财务上来说,都可以自由的使用Yii来开发任何一个开源的或者私有的应用。

它非常令人印象深刻的是,性能指标相比其他基于PHP的框架有明显效率,立即吸引了非常积极的关注并受到许多开发者的欢迎。本回答被网友采纳

yii2框架中query类和trait类是什么关系

财务管理属于管理学下的二级专业。在现代企业管理当中,财务管理是一项涉及面广、综合性和制约性都很强的系统工程,它是通过价值形态对资金运动进行决策、计划和控制的综合性管理,是企业管理的核心内容,因此毕业生要全面掌握财务管理的各方面知识。

  • 本文相关:
  • yii查询生成器(query builder)用法实例教程
  • yii不依赖model的表单生成器用法实例
  • yii框架关联查询with用法分析
  • yii2中使用join、joinwith多表关联查询
  • yii2增删改查之查询 where参数详细介绍
  • yii多表联合查询操作详解
  • yii基于数组和对象的model查询技巧实例详解
  • yii框架参数化查询中in查询只能查询一个的解决方法
  • yii2数据库查询实践
  • yii2实现跨mysql数据库关联查询排序功能代码
  • yii中的relations数据关联查询及统计功能用法详解
  • laravel 5.1 框架blade模板引擎用法实例分析
  • php 文件上传限制问题
  • ci框架常用函数封装实例
  • smarty高级特性之对象的使用方法
  • php递归方法实现无限分类实例代码
  • php加密算法之实现可逆加密算法和解密分享
  • 人脸识别测颜值、测脸龄、测相似度微信接口
  • zend的mvc机制使用分析(二)
  • php 比较获取两个数组相同和不同元素的例子(交集和差集)
  • php面向对象基础详解【星际争霸游戏案例】
  • PHP中使用YII框架的问题
  • $this->db->query($sql) 在一些php框架中,这种方式是怎么实现
  • PHP Yii2开发框架有什么优势好处
  • yii2框架中query类和trait类是什么关系
  • PHP框架Yii2怎么使用内置方法更新配置文件
  • Yii2 数据库查询yii\db\query all()方法的返回结果不是对象?
  • yii2框架中iframe怎么使用?
  • 线面这段php是什么意思(yii2框架的)
  • php YII2中怎么将xlsx文件导入数据库并存储起来?
  • 在YII2框架中,用PHP的GD库处理上传后的图片,把该图片裁剪成圆形的图片再供前端下载.
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例yii框架入门及常用技巧总结php优秀开发框架总结smarty模板入门基础教程php面向对象程序设计入门教程php字符串(string)用法总结php+mysql数据库操作入门教程php常见数据库操作技巧汇总yii查询生成器(query builder)用法实例教程yii不依赖model的表单生成器用法实例yii框架关联查询with用法分析yii2中使用join、joinwith多表关联查询yii2增删改查之查询 where参数详细介绍yii多表联合查询操作详解yii基于数组和对象的model查询技巧实例详解yii框架参数化查询中in查询只能查询一个的解决方法yii2数据库查询实践yii2实现跨mysql数据库关联查询排序功能代码yii中的relations数据关联查询及统计功能用法详解laravel 5.1 框架blade模板引擎用法实例分析php 文件上传限制问题ci框架常用函数封装实例smarty高级特性之对象的使用方法php递归方法实现无限分类实例代码php加密算法之实现可逆加密算法和解密分享人脸识别测颜值、测脸龄、测相似度微信接口zend的mvc机制使用分析(二)php 比较获取两个数组相同和不同元素的例子(交集和差集)php面向对象基础详解【星际争霸游戏案例】php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php字符串的连接的简单实例php强制文件下载而非在浏览器打开的自定义ci框架开发新浪微博登录接口源码完整版php命令行脚本接收传入参数的三种方式ci框架附属类用法分析codeigniter中view通过循环显示数组数据的windows7下php开发环境搭建图文教程详解php内置访问资源的超时时间 time_outphp+ajax 投票器功能php实现paypal 授权登录yii使用技巧大汇总
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved