YII2-基础

学习内容:YII2-基础

1、命名空间

2、创建控制器

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

<?php
namespace backend\controllers;
use yii\web\Controller;
class TestController extends Controller
{
    public function actionIndex()
    {
       echo '11';
    }
}

3、请求方式

1、请求参数

$request = Yii::$app->request;
$get = $request->get(); 
$id = $request->get('id');   
$id = $request->get('id', 1);   
$post = $request->post(); 
$name = $request->post('name');  
$name = $request->post('name', '');

2、restfull请求 ###

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

3、请求方法

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

4、请求头

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

5、请求的客户端信息

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

4、响应

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

5、Session

$session = Yii::$app->session;
检查是否开启
if($session->isActive){
    echo 'session';
}

设置一个session
$session->set('user','zhangsan');
获取一个session
echo $session->get('user');
删除session
$session->remove('user');

$session['user']  ='张三';
echo $session['user'];
unset($session['user']);

6、cookie

$cookies = Yii::$app->response->cookies;
$cookie_data = array('name'=>'user','value'=>'zhangsan');
$cookies->add(new Cookie($cookie_data));
$cookies->remove('user');

$cookies = Yii::$app->request->cookies;
echo $cookies->getValue('user');
echo $cookies->getValue('users',20);

$hello_str = 'hello world!<script>alert3;</script>';
$test_str = array(1,2);
$data = [];

$data['view_hello_str'] = $hello_str;
$data['view_test_str'] = $test_str;

return $this->render('index',$data);
return $this->render('about');

7、视图的创建

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

public function actionView($id)
{
    return $this->render('view', [
        'model' => $this->findModel($id),
    ]);
}

8、缓存

获取缓存组件
$cache = Yii::$app->cache;

往缓存中写数据
$cache ->add('key1','hello world');
$cache ->add('key1','hello world2');

修改缓存  可以设置
$cache->set('key1','hello world');
$cache->set('key1','hello world2');

读取缓存
 $data = $cache ->get('key1');

删除数据
 $data = $cache->delete('key1');

清空数据
$cache->flush();
$data = $cache->get('key1');

缓存有效期
 $cache->add('key','hello world',5);
$cache->set('key','hello world',5);
echo $cache->get('key');
var_dump($data);

9、模型的创建

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

<?php
namespace backend\models;
use yii\db\ActiveRecord;

class Test extends ActiveRecord
{

}

10、活动创建

 public function actionIndexss()
{
    //查询数据
    $sql = " select * from test where id =1";
    $model = new Test;
    $res = $model::findBySql($sql)->all();

    //id = 1
    $res = $model::find()->where(['id'=>1])->all();
    //id > 0
    $res = $model::find()->where(['>','id',0])->all();
    //id >= 1 且 id <= 2
     $res = $model::find()->where(['between','id',1,2])->all();
    //title like '%title1%'
    $res = $model::find()->where(['like', 'title', 'title'])->all();

    //查询结果转为数组  将数组转为对象  内存占有量比较高  需要转为数组 asArray()
    //$res = $model::find()->where(['between','id',1,2])->asArray()->all();

    //批量查询  //每次拿多少 batch
    /*oreach ($model::find()->batch(1) as $tests){
        print_r(count($tests));

    //删除数据
    $res = $model::find()->where(['id'=>1])->all();
    $res[0] ->delete();
    $model::deleteAll('id>:id',array(':id'=>0));

    //增加数据
    $model->id = 4;
    $model->title = 'title3';
    $model->validate();
    if($model->hasErrors()){
    echo 'data is error';
    die;
    $model->save();

    //修改数据
    $res = $model::find()->where(['id'=>4])->one();
    $res->title = 'title4';
    $res->save();
    print_r($res);
}

11、关联关系

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

1、Customer模型

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

2、Order模型

<?php
namespace common\models;
use yii\db\ActiveRecord;

class Order extends ActiveRecord
{
    //根据订单查找客户  一个订单对应一个客户
    public function getCustomer()
    {
        return $this->hasOne(Customer::className(),['id'=>'customer_id'])->asArray();
    }
}

3、控制器

//根据客户查找出对应的订单
$customer = Customer::find()->where(['name'=>'li'])->one();
$data = $customer->orders;

//根据订单找客户
$order_data = Order::find()->where(['id'=>1])->one();
$user = $order_data->customer;
print_r($user);

12、关联查询的优化

//关联查询的多次查询  首先select * from customer  然后每次遍历再查一次
$customers = Customer::find()->all();
foreach ($customers as $customer){
    $orderes = $customer ->orders;
}

//优化 首先 select * from customer  然后select * from order where customer_id in ();
$customers = Customer::find()->with('orders')->all();
foreach ($customers as $customer){
    $orderes = $customer ->orders;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值