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. 前台

<?php  echo \Yii\helpers\Html::encode($str) ?>将$str的html标签转为实体。<?=  echo \Yii\helpers\Html::process($str)?>去掉html标签

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

  控制器方法:

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

  public function actionIndex(){

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

  }

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

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

  <?=$this->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;

  }

  where 查询: where(['and' , [ 'like' , 'cas' , $key.'%' , false ] , [ 'is_delete' => 0] ])->andWhere([ '>' , 'add' , $time])

  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 = Article::deleteAll('id>:id And num<:num',[':id'=>13,':num'=>100]);

16. 多表关联查询

  文章分类表(分类id)->文章表 ,首先在models中简历一个分类表的模型类

  $category = Category::findOne(1);

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

17.  with的使用

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

  public function getCategory(){

    $category = $this->hasOne(Category::className(),['id'='cate_id'])->asArray();

    return $category;

  }

18. 输出sql语句的方法

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

19. 模型类中的查询 :

  $this->find()->where(['a'=>1])->andwhere(['>'],'add_time',123456)->one();

20. Yii获取验证码的方法

  控制器中 :

  $val = new \common\mobles\ValidateCode();

  $val->doimg();

  Yii::$app->session['vakudatacode'] = $val->getCode();

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

  在表单中加入<input name="_csrf" type="hidden" id="_csrf" value="<?=Yii::$app->request->csrfToken?>"/>

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

  $this->find()->select('字段1,字段2')->one();

23. 设置头部信息

  $res = Yii::$app->response;

  $res->statusCode = '404';    //设置访问状态

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

  $res->headers->set('pragma','max-age=5');    //设置头部信息

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

  跳转

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

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

  文件下载

  $res->headers->add('content-disposition','attachement:filename="a.jpg"');

  $res->sendFile('./b.jpg');

24. session应用组件,session文件在phpstudy/tmp/tmp

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

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

    echo 'session is actve';

  }

  $session->set('user', '张三');  //设置session

  $session->get('user');    //获取session  

  $session->remove('user');  //删除session

25. cookie应用组件的使用

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

  $cookie = Yii::$app->response->cookie;

  $cookie_array = array('name'=>'user' , 'value'=>'zhangsan');

  $cookie->add(new Cookie($cookie_data));  //重复设置会覆盖

  $cookie->remove('name');

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

  echo $cookie->getValue('user',20);

  $cookie = Yii::$app->request->cookies;   //只读

  $cookie = Yii::$app->response->cookies;    //可写入

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

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

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

27. db直接执行sql

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

  $a = $db->createCommand($sql)->query();  //查询

  $b = $db->createCommand($sql)->execute();  //其他

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

  方法:$cache = Yii::$app->cache;

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

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

29. Yii2页面引入js文件

  <?=Html::jsFile('public.plug/xxx/xxx.js')?>

30. 创建事务

  $transaction = Yii::$app->db->beginTransaction();

  提交事务

  $transaction->commit();

  回滚

  $transaction->rollback();

最新文章

  1. String.format介绍
  2. java 继承(下)
  3. Linux Kernel Version Numbering
  4. java LinkedBlockingQueue和ConcurrentLinkedQueue的区别
  5. js动态设置窗体位置
  6. python 建立网站
  7. Xenomai 的模式切换浅析
  8. Android组件间的数据传输
  9. Python编程中常用的12种基础知识总结
  10. ASP.NET之Cookie(坑爹的Response.Cookies.Remove)
  11. FFmpeg安装(windows环境)
  12. c# HttpWebRequest 模拟HTTP post 传递JSON参数
  13. 动态计算rem的js代码
  14. dataTable插件的使用
  15. HTTP协议扫盲(八 )响应报文之 Transfer-Encoding=chunked方式
  16. java之Spring(AOP)-Annotation实现添加切面
  17. 【原创】大叔问题定位分享(1)HBase RegionServer频繁挂掉
  18. Python应用——自定义函数:分割PDF文件函数
  19. 浅入浅出JDBC————1分钟了解JDBC
  20. python 数据可视化(matplotlib)

热门文章

  1. 导出Excel解决方案之一NOPI
  2. git clone Timed out 解决
  3. 关于IE6下绝对定位元素莫名消失的问题
  4. Bootstrap 的 ScrollSpy
  5. C++面试笔记--字符串
  6. C++笔记--指针数组和结构
  7. 多线程学习-基础(十二)生产者消费者模型:wait(),sleep(),notify()实现
  8. Timer的schedule和scheduleAtFixedRate方法的区别解析(转)
  9. const与define的区别
  10. [转载]应用 Valgrind 发现 Linux 程序的内存问题