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;
}
还没有评论,来说两句吧...