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

Yii2的框架笔记整理

1.request的获取方式$requestYii::$app-request;2.get参数的获取方式$id$request-get(id,1);获取get的id࿰

1 .request的获取方式

  $request = Yii::$app->request;

2. get参数的获取方式

  $id = $request->get('id',1);获取get的id,默认1

3 .post参数的获取方式

  $id = $request->post('id',1); 获取post的id,默认1

4. 判断是否为get或者post的请求

  $request->isGet; $request->isPost ; 是为true,否为false

5. 获取用户

  ip $request->userIP;

6. 将后台数据传递到前台

  return $this->renderPartial('index',$data);  return $this->render('index',$data);  $data表示传递到前台的数据

7. compact 合并数组

8. 前台   

将$str的html标签转为实体。去掉html标签

9. 不自己定义父模板,不适用原模板 

  控制器方法:

  public $layout = 'home';//用属性的方法定义父模板

  public function actionIndex(){

    return $this->render('index');

  }

  在view/layout/写一个home.php,自定义一个父模板

10. 在不用的页面之间互相引用   

  render('about'); ?>

11. 模型类

  namespace app\models;

  use \Yii\db\ActiveRecord;

  class Article extends ActiveRecord{}

  在控制器中加入模型方法

  use app\models\Article;

  使用封装好的操控数据库的方法

  $xx = Article::findBySql(sql语句)->all();

12. 查询数据

  查询单条数据:id = 5

  $data = Article::find()->where(['id'=>5])->one();    此处的$data是一个对象

  数组: $data = Article::find()->asArray()->all();    此处的$data是一个数组

  将返回的多条数据分段取出,如得到1000条,分别以10条的形式展示,以减少内存占用的方法:

  foreach(Article::find()->batcjh(10) as $article)){

    $data[] = $article;

  }

  like条件 ,andWhere , in条件, !=

  where 查询: where(['and' , [ 'like' , 'cas' , $key.'%' , false ] , [ 'is_delete' => 0] ])->andWhere([ '>' , 'add' , $time])->andWhere(['in' , 'id' , [232,467,14,19,52])->andwhere([ '!=' , 'parent', 0 ])

  left 查询:

  $model = (new Query())

      ->select( ' A.xx , A.xx , B.xx,  B.xx , C.xx' ) 

      ->from(' ti as A')

      ->leftJoin( ' t2 as B ' , ' ti.id = t2.id ')

      ->leftJoin(' t3 as C ' , ' ti.id = t3.id ')

      ->where($where)

13. 添加数据到数据库

  在控制器的方法中

  $Article = new Article();

  $Article->字段1 = '值';

  $Article->字段2 = '值';

  $data = $Article->insert();或者$data = $Article->save();

  以上两种方法返回的都是true或者false;插入到表article;返回插入的数据的is的方法: $id = $Article->attributes['id'];

14. 修改数据库

  //修改记录

  $article = Article::findOne(11);  //查询id为11的这条数据

  $article->title = 'xxxx';

  $article->num = 10;

  $data = $article->update(); 或者$data = $article->save();

  //修改查看次数(单个字段)

  $data = $Article::updateAllCounters(['num'=>1],['id'=>8]); 修改id为8的这条数据

  $data = $this->updateAll(['name'=>'lisa','sex=>0'] , ['ok'=>1] , '额外条件' ) ;

              ↑字段值                          ↑where     ↑order

 

  更新数据库,字段自增+1,2018-6-30更新

  $result = Yii::$app->db->createCommand()->update('app_xwnew_items',['price' =>new Expression('price+1')], "item_id=".$item_id)->execute();

15. 删除数据

  $article = Article::findOne(16);

  $article = Article::find()->where(['id'=>15])->one();    $result = $article->delete();

  $article = Article::find()->where(['id'=>15])->all();  $result = $article[0]->delete();

  $result &#61; Article::deleteAll(&#39;id>:id And num<:num&#39;,[&#39;:id&#39;&#61;>13,&#39;:num&#39;&#61;>100]);

16. 多表关联查询

  文章分类表&#xff08;分类id&#xff09;->文章表 &#xff0c;首先在models中简历一个分类表的模型类

  $category &#61; Category::findOne(1);

  $result &#61; $category->hasMany(Article::className(),[&#39;cate_id&#39;&#61;>&#39;id&#39;])->all();    hasOne方法则是一对一

17.  with的使用

  $result &#61; Article::find()->with(&#39;category&#39;)->asArray()->all();    其实是用了article模型类中的getcategory()方法。

  public function getCategory(){

    $category &#61; $this->hasOne(Category::className(),[&#39;id&#39;&#61;&#39;cate_id&#39;])->asArray();

    return $category;

  }

18. 输出sql语句的方法

  $retuslt->createCommand()->getRawSql();

19. 模型类中的查询 :

  $this->find()->where([&#39;a&#39;&#61;>1])->andwhere([&#39;>&#39;],&#39;add_time&#39;,123456)->one();

20. Yii获取验证码的方法

  控制器中 &#xff1a;

  $val &#61; new \common\mobles\ValidateCode();

  $val->doimg();

  Yii::$app->session[&#39;vakudatacode&#39;] &#61; $val->getCode();

21. Yii2中的表单令牌验证加入防止出现404错误

  在表单中加入request->csrfToken?>"/>

22. 模型类中只查询某些字段

  $this->find()->select(&#39;字段1&#xff0c;字段2&#39;)->one();

23. 设置头部信息

  $res &#61; Yii::$app->response;

  $res->statusCode &#61; &#39;404&#39;;    //设置访问状态

  $res->headers->add(&#39;pragma&#39;,&#39;no-cache&#39;);     //设置头部信息

  $res->headers->set(&#39;pragma&#39;,&#39;max-age&#61;5&#39;);    //设置头部信息

  $res->header->remove(&#39;pragma&#39;);                  //设置头部信息

  跳转

  $res->headers->add(&#39;location&#39;,&#39;http://www.baidu.com&#39;);

  $this->redirect(&#39;http://www.baidu.com&#39;,302);

  文件下载

  $res->headers->add(&#39;content-disposition&#39;,&#39;attachement:filename&#61;"a.jpg"&#39;);

  $res->sendFile(&#39;./b.jpg&#39;);

24. session应用组件&#xff0c;session文件在phpstudy/tmp/tmp

  $session &#61; Yii::$app->session;

  if($session->isActive){    //判断session是否开启

    echo &#39;session is actve&#39;;

  }

  $session->set(&#39;user&#39;, &#39;张三&#39;);  //设置session

  $session->get(&#39;user&#39;);    //获取session  

  $session->remove(&#39;user&#39;);  //删除session

25. COOKIE应用组件的使用

  首先在每个控制器的命名空间下加上    use Yii\web\COOKIE

  $COOKIE &#61; Yii::$app->response->COOKIE;

  $COOKIE_array &#61; array(&#39;name&#39;&#61;>&#39;user&#39; , &#39;value&#39;&#61;>&#39;zhangsan&#39;);

  $COOKIE->add(new COOKIE($COOKIE_data));  //重复设置会覆盖

  $COOKIE->remove(&#39;name&#39;);

  $COOKIE &#61; Yii::$app->request->COOKIEs;

  echo $COOKIE->getValue(&#39;user&#39;,20);

  $COOKIE &#61; Yii::$app->request->COOKIEs;   //只读

  $COOKIE &#61; Yii::$app->response->COOKIEs;    //可写入

26. 使用common文件夹下的类的方法

  在common下的init.php入口配置文件中引入  如&#xff1a;qq\QC.class.php

  在项目的控制器中使用 new\QC();

 27. db直接执行sql

  $db &#61; Yii::$app->db;

  $a &#61; $db->createCommand($sql)->query();  //查询

  $b &#61; $db->createCommand($sql)->execute();  //其他

28. Yii2设置缓存&#xff0c;将查询出来的数据保存到front/runtime/cache/xxx

  方法&#xff1a;$cache &#61; Yii::$app->cache;

     $cache->("company_detail_".$_POST[&#39;&#39;id] , $arr , 时间秒);

  读取&#xff1a;$cache->get( "company_detail_".$id );  读取出来的是一个完成的$arr

29. Yii2页面引入js文件     

  

30. 创建事务

  $transaction &#61; Yii::$app->db->beginTransaction();

  提交事务

  $transaction->commit();

  回滚

  $transaction->rollback();

  一般使用方法&#xff1a;

  try{

    if(false){

      throw new \Exception(&#39;这里填写异常信息&#xff0c;如&#xff1a;sorry,保存失败,请稍后再试!&#39;);

    } 

  }catch (\Exception $e) {

     $transaction->rollBack();
  }

 

转:https://www.cnblogs.com/fpcing/p/8989278.html



推荐阅读
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
author-avatar
书友36431060
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有