Yii2的框架笔记整理
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();
Yii2的框架笔记整理的更多相关文章
- 从0开始学Swift笔记整理(五)
这是跟在上一篇博文后续内容: --Core Foundation框架 Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Sw ...
- Deep Learning(深度学习)学习笔记整理系列之(八)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(三)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- java笔记整理
Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...
- JS第一周学习笔记整理
目录 JS正式课第一周笔记整理 JS正式课第一周笔记整理 webstorm : 代码编辑器 浏览器: 代码解析器: Git : 是一个工具;用于团队协作开发项目管理代码的工具:在工作中用git.svn ...
- Spring:笔记整理(1)——HelloWorld
Spring:笔记整理(1)——HelloWorld 导入JAR包: 核心Jar包 Jar包解释 Spring-core 这个jar 文件包含Spring 框架基本的核心工具类.Spring 其它组件 ...
- 运维开发笔记整理-URL配置
运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
随机推荐
- SpringBoot05 数据操作02 -> JPA接口详解
概览 JpaRepository 继承 PagingAndSortingRepository 继承 CrudRepository 继承 Repository 1 Repository 这是一个空接口, ...
- Luogu 2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
基环树森林,然而我比较菜,直接tarjan找环. 发现缩点之后变成了DAG,每一个点往下走一定会走到一个环,缩点之后搜一遍看看会走到哪个环以及那个环的编号是多少,答案就是环的$siz$$ + $要走的 ...
- PHP中抽象类与接口的区别
PHP中抽象类与接口的区别 抽象类abstract 概念 定义为抽象的类不能被实例化.任何一个类,如果有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的类. 继承一个抽象类的时候,子类必须定义 ...
- 【转】链接任意目录下库文件(解决错误“/usr/bin/ld: cannot find -lxxx”
netbeans构建项目也出现了同样的问题.猜测是netbeans内部就用的是-l 这种编译方式,所以需要把***.a手动改为lib***.a 原文地址:链接任意目录下库文件(解决错误“/usr/bi ...
- 「BZOJ 3242」「NOI 2013」快餐店「基环树」
题意 基环树上找到一个点(可以在边上)使得它到树上最远点的距离最小,输出最小距离 题解 如果是一棵树,答案就是树的直径\(/2\) 如果是基环树,那么很好证明删去环上的某一条边是不影响答案的.于是断环 ...
- 「BZOJ 1791」「IOI 2008」Island「基环树」
题意 求基环树森林所有基环树的直径之和 题解 考虑的一个基环树的直径,只会有两种情况,第一种是某个环上结点子树的直径,第二种是从两个环上结点子树内的最深路径,加上环上这两个结点之间的较长路径. 那就找 ...
- leftjoin及多个leftjoin执行顺序
给个通俗的解释吧.例表aaid adate1 a12 a23 a3表bbid bdate1 b12 b24 b4两个表a,b相连接,要取出id相同的字段select * from a inner jo ...
- git 增量打包
git diff f506693 ccc253c3 --name-only | xargs tar -czvf update.tar.gz
- CUDA中自动初始化显卡设备宏
每次为了减少初始化的工作量,可以写入下面的宏. #define CUT_DEVICE_INIT(ARGC,ARGV){ \ int deviceCount; \ CUDA_SAFE_CALL_NO_S ...
- 网络通讯与IP地址
1.主机:Host,台式机,笔记本,手机等设备 2.网络介质:网线,光纤,无线网Wi-Fi.移动网络 3.数据:一串子节 网络通讯的检测:安装wireshark,通常称为抓包工具 抓,capture ...