YII2-基础

た 入场券 2022-05-28 07:58 312阅读 0赞

学习内容:YII2-基础

1、命名空间

2、创建控制器

1- 创建控制器:文件名:TestController
2- 访问的路径:http://www.backend.com/test/index

  1. <?php
  2. namespace backend\controllers;
  3. use yii\web\Controller;
  4. class TestController extends Controller
  5. {
  6. public function actionIndex()
  7. {
  8. echo '11';
  9. }
  10. }

3、请求方式

1、请求参数

  1. $request = Yii::$app->request;
  2. $get = $request->get();
  3. $id = $request->get('id');
  4. $id = $request->get('id', 1);
  5. $post = $request->post();
  6. $name = $request->post('name');
  7. $name = $request->post('name', '');

2、restfull请求 ###

  1. //返回所有参数
  2. $params = $request->bodyParams;
  3. //返回参数的id
  4. $param = $request->getBodyParam('id');

3、请求方法

  1. if ($request->isAjax) { /* 该请求是一个 AJAX 请求 */ }
  2. if ($request->isGet) { /* 请求方法是 GET */ }
  3. if ($request->isPost) { /* 请求方法是 POST */ }
  4. if ($request->isPut) { /* 请求方法是 PUT */ }

4、请求头

  1. $headers = Yii::$app->response->headers;
  2. // 增加一个 Pragma 头,已存在的Pragma 头不会被覆盖。
  3. $headers->add('Pragma', 'no-cache');
  4. // 设置一个Pragma 头. 任何已存在的Pragma 头都会被丢弃
  5. $headers->set('Pragma', 'no-cache');
  6. // 删除Pragma 头并返回删除的Pragma 头的值到数组
  7. $values = $headers->remove('Pragma');

5、请求的客户端信息

  1. $userHost = Yii::$app->request->userHost;
  2. $userIP = Yii::$app->request->userIP;

4、响应

  1. $res = Yii::$app->response;
  2. //返回状态码
  3. $res -> statusCode = 404;
  4. //增加一个pragma头
  5. $res->headers->add('Pragma','no-cache');
  6. //设置一个pragma头
  7. $res->headers->set('Pragma','max-age=5');
  8. //删除pragma头
  9. $res->headers->remove('Pragma');
  10. //跳转
  11. $res->headers->add('location','http://www.baidu.com');
  12. //跳转
  13. $res->redirect('http://www.baidu.com',302);
  14. //文件下载
  15. $res->headers->add('content-disposition','attachment;filename="a.jpg" ');
  16. $res->sendFile('./robots.txt');

5、Session

  1. $session = Yii::$app->session;
  2. 检查是否开启
  3. if($session->isActive){
  4. echo 'session';
  5. }
  6. 设置一个session
  7. $session->set('user','zhangsan');
  8. 获取一个session
  9. echo $session->get('user');
  10. 删除session
  11. $session->remove('user');
  12. $session['user'] ='张三';
  13. echo $session['user'];
  14. unset($session['user']);
  1. $cookies = Yii::$app->response->cookies;
  2. $cookie_data = array('name'=>'user','value'=>'zhangsan');
  3. $cookies->add(new Cookie($cookie_data));
  4. $cookies->remove('user');
  5. $cookies = Yii::$app->request->cookies;
  6. echo $cookies->getValue('user');
  7. echo $cookies->getValue('users',20);
  8. $hello_str = 'hello world!<script>alert3;</script>';
  9. $test_str = array(1,2);
  10. $data = [];
  11. $data['view_hello_str'] = $hello_str;
  12. $data['view_test_str'] = $test_str;
  13. return $this->render('index',$data);
  14. return $this->render('about');

7、视图的创建

文件位置:asset文件夹下,test文件夹、view.php文件
render:加载父类模板
renderPartial:不加载父类模板

  1. public function actionView($id)
  2. {
  3. return $this->render('view', [
  4. 'model' => $this->findModel($id),
  5. ]);
  6. }

8、缓存

  1. 获取缓存组件
  2. $cache = Yii::$app->cache;
  3. 往缓存中写数据
  4. $cache ->add('key1','hello world');
  5. $cache ->add('key1','hello world2');
  6. 修改缓存 可以设置
  7. $cache->set('key1','hello world');
  8. $cache->set('key1','hello world2');
  9. 读取缓存
  10. $data = $cache ->get('key1');
  11. 删除数据
  12. $data = $cache->delete('key1');
  13. 清空数据
  14. $cache->flush();
  15. $data = $cache->get('key1');
  16. 缓存有效期
  17. $cache->add('key','hello world',5);
  18. $cache->set('key','hello world',5);
  19. echo $cache->get('key');
  20. var_dump($data);

9、模型的创建

文件位置:models
文件名:Test.php

  1. <?php
  2. namespace backend\models;
  3. use yii\db\ActiveRecord;
  4. class Test extends ActiveRecord
  5. {
  6. }

10、活动创建

  1. public function actionIndexss()
  2. {
  3. //查询数据
  4. $sql = " select * from test where id =1";
  5. $model = new Test;
  6. $res = $model::findBySql($sql)->all();
  7. //id = 1
  8. $res = $model::find()->where(['id'=>1])->all();
  9. //id > 0
  10. $res = $model::find()->where(['>','id',0])->all();
  11. //id >= 1 且 id <= 2
  12. $res = $model::find()->where(['between','id',1,2])->all();
  13. //title like '%title1%'
  14. $res = $model::find()->where(['like', 'title', 'title'])->all();
  15. //查询结果转为数组 将数组转为对象 内存占有量比较高 需要转为数组 asArray()
  16. //$res = $model::find()->where(['between','id',1,2])->asArray()->all();
  17. //批量查询 //每次拿多少 batch
  18. /*oreach ($model::find()->batch(1) as $tests){
  19. print_r(count($tests));
  20. //删除数据
  21. $res = $model::find()->where(['id'=>1])->all();
  22. $res[0] ->delete();
  23. $model::deleteAll('id>:id',array(':id'=>0));
  24. //增加数据
  25. $model->id = 4;
  26. $model->title = 'title3';
  27. $model->validate();
  28. if($model->hasErrors()){
  29. echo 'data is error';
  30. die;
  31. $model->save();
  32. //修改数据
  33. $res = $model::find()->where(['id'=>4])->one();
  34. $res->title = 'title4';
  35. $res->save();
  36. print_r($res);
  37. }

11、关联关系

分别新建两个模型 customer.php order.php

1、Customer模型

  1. <?php
  2. namespace common\models;
  3. use yii\db\ActiveRecord;
  4. class Customer extends ActiveRecord
  5. {
  6. public function getOrders()
  7. {
  8. //根据客户找订单 一个客户多个订单 客户的id 对应 订单id
  9. return $this->hasMany(Order::className(),['customer_id'=>'id'])->asArray();
  10. }
  11. }

2、Order模型

  1. <?php
  2. namespace common\models;
  3. use yii\db\ActiveRecord;
  4. class Order extends ActiveRecord
  5. {
  6. //根据订单查找客户 一个订单对应一个客户
  7. public function getCustomer()
  8. {
  9. return $this->hasOne(Customer::className(),['id'=>'customer_id'])->asArray();
  10. }
  11. }

3、控制器

  1. //根据客户查找出对应的订单
  2. $customer = Customer::find()->where(['name'=>'li'])->one();
  3. $data = $customer->orders;
  4. //根据订单找客户
  5. $order_data = Order::find()->where(['id'=>1])->one();
  6. $user = $order_data->customer;
  7. print_r($user);

12、关联查询的优化

  1. //关联查询的多次查询 首先select * from customer 然后每次遍历再查一次
  2. $customers = Customer::find()->all();
  3. foreach ($customers as $customer){
  4. $orderes = $customer ->orders;
  5. }
  6. //优化 首先 select * from customer 然后select * from order where customer_id in ();
  7. $customers = Customer::find()->with('orders')->all();
  8. foreach ($customers as $customer){
  9. $orderes = $customer ->orders;
  10. }

发表评论

表情:
评论列表 (有 0 条评论,312人围观)

还没有评论,来说两句吧...

相关阅读

    相关 yii2安装

    这些天看了一下,发现还有很多人对yii2安装存在许多问题,在网上搜了很多资料,才发现他们都很不全面,以至于走了很多弯路, 下面我把完整的安装流程介绍给大家:按照这个流程走,

    相关 YII2-基础

    学习内容:YII2-基础 1、命名空间 2、创建控制器 1- 创建控制器:文件名:TestController 2- 访问的路径:[http://www.