热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

yii框架学习(二)

模型orderby的使用:-orderBy([addtimeSORT_DESC,sortSORT_ASC])-all()在使用find()查询的时候,指定查询字段:find
  1. 模型
    1. orderby的使用:
      ->orderBy(['addtime'=>SORT_DESC, 'sort'=>SORT_ASC])->all()
    2. 在使用find()查询的时候, 指定查询字段:
      find()->select('id, title, content') 指定查询的字段
    3. 块赋值, 使用attributes, 比如 $psychological->attributes = $input; 把数组一次性赋值给attributes 属性, 但是要注意, 要确保模型类中的rules方法, 已经包含了要赋值的字段否则attributes 属性接收不到值. 就不能保存成功
    4. where 作为查询条件单独拿出来的时候, 想使用  <  >  >&#61;  <&#61;  <>  进行范围查询的时候, 要怎么写?

      $where &#61; [&#39;and&#39;,[&#39;<&#39;, &#39;minscore&#39;, $score],[&#39;>&#39;, &#39;maxscore&#39;, $score],];
      //查询满足minscore<$score并且maxscore>$score 的记录

    5. yii2中同时连接两个或以上数据库:(如果在本地开发完,传到线上服务器, 需要把配置的数据库的用户名和密码改成线上数据库的
      )
      1. 在config目录下web.php文件中的components数组里配置

        &#39;db2&#39; &#61;> [&#39;class&#39; &#61;> &#39;yii\db\Connection&#39;,&#39;dsn&#39; &#61;> &#39;mysql:host&#61;localhost;dbname&#61;quickapp&#39;,&#39;username&#39; &#61;> &#39;root&#39;,&#39;password&#39; &#61;> &#39;root&#39;,&#39;charset&#39; &#61;> &#39;utf8&#39;,],

      2. 在继承ActiveRecord的模型中设置表名,rules等,必须要注意一点, yii默认连接的是components里面的db设置的数据库, 所以当连接其他数据库的时候, 就必须要重写 getDb() 方法, 很简单

        public static function getDb(){return \Yii::$app->db2; //db2就是components里的db2下标}

        OK, 可以使用了.

    6.  yii打印SQL语句:

      echo RecycleModel::find()->alias(&#39;r&#39;)->select(&#39;r.name as rubbish, c.id, c.name, c.code, c.inc, c.des,c.req&#39;)->leftJoin([&#39;c&#39;&#61;>RecycleCateModel::tableName()], &#39;r.category_id&#61;c.id&#39;)->where($where)->orderBy([&#39;modified&#39;&#61;>SORT_DESC])->limit(&#39;10&#39;)->asArray()->createCommand()->getRawSql();exit;

       

    7. 添加数据()

      $usercode &#61; \Yii::$app->db->createCommand()->batchInsert(UserVoucher::tableName(), [&#39;code&#39;, &#39;cat_id&#39;,&#39;userId&#39;, &#39;gettime&#39;, &#39;expire&#39;], [[$code[&#39;code&#39;], $id, $userId, time(), $code[&#39;expire&#39;]],])->execute(); // \Yii::$app->db 这里的db, 如果换成db2, 就是往db2数据库里插入数据.

       

    8. 连表查询分页

      $count &#61; VoucherCode::find()
      ->alias(&#39;v&#39;)
      ->leftJoin([&#39;c&#39;&#61;>RubbishCate::tableName()], &#39;v.cat_id&#61;c.id and v.is_delete&#61;0&#39;)
      ->where($where)
      ->count(); //查询符合连表数据总数
      $p &#61; new Pagination([&#39;totalCount&#39;&#61;>$count, &#39;pageSize&#39;&#61;>15]);
      $code &#61; VoucherCode::find()
      ->alias(&#39;v&#39;)
      ->leftJoin([&#39;c&#39;&#61;>RubbishCate::tableName()], &#39;v.cat_id&#61;c.id and v.is_delete&#61;0&#39;)
      ->select(&#39;v.*, c.name&#39;)
      ->where($where)
      ->offset($p->offset)
      ->limit($p->limit)
      ->asArray()
      ->all(); //查询数据
      return $this->render(&#39;/rubbish-voucher/list&#39;, [&#39;code&#39;&#61;>$code, &#39;pagination&#39;&#61;>$p]);
      //views视图调用

      &#39;pagination&#39; &#61;> $pagination,
      &#39;prevPageLabel&#39; &#61;> &#39;上一页&#39;,
      &#39;nextPageLabel&#39; &#61;> &#39;下一页&#39;,
      &#39;firstPageLabel&#39; &#61;> &#39;首页&#39;,
      &#39;lastPageLabel&#39; &#61;> &#39;尾页&#39;,
      &#39;maxButtonCount&#39; &#61;> 5,
      &#39;options&#39; &#61;> [
      &#39;class&#39; &#61;> &#39;pagination&#39;,
      ],
      &#39;prevPageCssClass&#39; &#61;> &#39;page-item&#39;,
      &#39;pageCssClass&#39; &#61;> "page-item",
      &#39;nextPageCssClass&#39; &#61;> &#39;page-item&#39;,
      &#39;firstPageCssClass&#39; &#61;> &#39;page-item&#39;,
      &#39;lastPageCssClass&#39; &#61;> &#39;page-item&#39;,
      &#39;linkOptions&#39; &#61;> [
      &#39;class&#39; &#61;> &#39;page-link&#39;,
      ],
      &#39;disabledListItemSubTagOptions&#39; &#61;> [&#39;tag&#39; &#61;> &#39;a&#39;, &#39;class&#39; &#61;> &#39;page-link&#39;],
      ])
      ?>

       

    9.  

      条件查询&#xff1a;

      $status &#61; \Yii::$app->request->get(&#39;status&#39;, &#39;&#39;); //获取用户传入的条件
      $where &#61; [];
      if($status !&#61; &#39;&#39;){ $where[&#39;status&#39;] &#61; $status;
      }
      $where[&#39;is_delete&#39;] &#61; 0;

       

    10.  

      多对多关联

      //课程表和用户表多对多关联, 课程course模型里获取用户表字段, 中间表为 user_course, 中间表写在viaTable()里
      public
      function getUser(){return $this->hasMany(User::className(), [&#39;id&#39;&#61;>&#39;uid&#39;])->viaTable(&#39;user_course&#39;, [&#39;course_id&#39;&#61;>&#39;id&#39;]);}
      //或者使用via()
      //获取关联表的属性

      $user &#61; Course::findOne($v[&#39;id&#39;])->user;
      //统计有多少人
      $num &#61; count(Course::findOne($v[&#39;id&#39;])->user);

       

    11.  

       接口返回分页数据

      $count &#61; Course::find()->where($where)->count(); //数据总数
      $p &#61; new Pagination([&#39;totalCount&#39;&#61;>$count, &#39;pageSize&#39;&#61;>$pagesize]); //实例化分页类
      $course &#61; Course::find()->select(&#39;id, title, pic_url, sections, teacher, fee, free&#39;)->where($where)->offset(($page-1)*$pagesize)->limit($p->limit)->all(); //前端传入第几页$page和每页显示多少条$pagesize, 主要是offset方法里的参数怎么写

       

    12.  

      $model->errors; 打印数据验证过程中的错误信息 

转:https://www.cnblogs.com/bneglect/p/11295828.html



推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
author-avatar
一首老歌L_798
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有