yii2.0常用知识点总结

一、yii2获取用户get,post参数

Get:
Yii::$app->request->get($key, $default):第一个参数($key)为用户get请求的key,第一个参数选填;第二个参数($default)是默认值,第二个参数选填;不填参数得到的是get数据的数组。
Yii::$app->request->queryParams:得到的是数组,与Yii::$app->request->get()相等。

Post:
Yii::$app->request->post($key, $default):第一个参数($key)为用户post请求的key,第一个参数选填,第二个参数($default)是默认值,第二个参数选填;不填参数得到的是post数据的数组。
Yii::$app->request->bodyParams:得到的是数组,与Yii::$app->request->post()相等。

判断用户请求:
Yii::$app->request->isGet;
Yii::$app->request->isPost;


1.普通的get和pst请求

$request = Yii::$app->request;
   
$get = $request->get(); 
// 等同于: $get = $_GET;  
$id = $request->get('id');   
// 等同于: $id = isset($_GET['id']) ? $_GET['id'] : null;  
$id = $request->get('id', 1);   
// 等同于: $id = isset($_GET['id']) ? $_GET['id'] : 1;
//添加了默认值  
$post = $request->post(); 
// equivalent to: $post = $_POST;  
$name = $request->post('name');   
// 等同于: $name = isset($_POST['name']) ? $_POST['name'] : null;  
$name = $request->post('name', '');   
// 等同于: $name = isset($_POST['name']) ? $_POST['name'] : '';

2、判断请求属性

$request = Yii::$app->request;
  
if ($request->isAjax) { // 判断是否为AJAX 请求 }
if ($request->isGet)  { // 判断是否为GET 请求 }
if ($request->isPost) { // 判断是否为POST 请求}
if ($request->isPut)  { // 判断是否为PUT 请求 }

3、获取请求头信息

// $headers is an object of yii\web\HeaderCollection 
$headers = Yii::$app->request->headers;
// 返回header头部所有信息
 
$accept = $headers->get('Accept');
if ($headers->has('User-Agent')) { // 获取User-Agent }

4、获取用户客户端信息

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

二、多表关联示例:

label模型:

<?php
namespace frontend\models;

use frontend\components\RunException;
use yii\data\Pagination;

class Label extends \common\models\Label
{


    public function getLabelQuestion()
    {
        return $this->hasMany(LabelQuestion::className(),['labelId' => 'id'])->with(['questions' => function($query){
            $query->select(['id','title','answer']);
        }]);
    }
}

labelquestion模型:

<?php

namespace frontend\models;

class LabelQuestion extends \common\models\LabelQuestion
{

    public function getTag()
    {
        return $this->hasOne(Questions::className(), ['id'=>'questionId']);
    }
}

LabelController.php控制器:

    public function actionRelative()
    {
        $request = Yii::$app->request;
        //通过关联关系获得Label 、LabelQuestion、Questions相关数据,方法一:
//        $result = $request->get(); //www.nurse.com/mini/label/relative?id=1
        $result = $request->post();
//        $labelQues = Label::findOne($result['id']);
//        $label_Ques = $labelQues->labelQuestion;
//        $column = array_column($label_Ques,'questionId');
//        $question = Questions::find()->where(['in','id',$column])->select(['title','answer'])->asArray()->all();
//        var_dump($question);exit;

        //通过关联关系获得Label 、LabelQuestion、Questions相关数据,方法二:
//        $result = $request->get(); //www.nurse.com/mini/label/relative?id=1
//        $result = $request->post();
//
//        $labelQues = Label::find()->where(['id' => $result['id']])->groupBy(['name'])->with(['labelQuestion' => function ($query) {
//            $query->select(['id','labelId','questionId']);
//        }])->asArray()->all();
//        return $labelQues;die;
        
        //通过关联关系获得Label 、LabelQuestion、Questions相关数据,方法三:
        $labelQues = LabelQuestion::find()->alias('lq')->select(['lq.questionId','lq.labelId'])->leftJoin(Label::tableName().' as lb','lb.id = lq.labelId')->where(['lb.id' => 1]);
        $data = $labelQues->asArray()->all();
        $column = array_column($data,'questionId');
        $question = Questions::find()->where(['in','id',$column])->asArray()->all();
        var_dump($question);die;
        return $question;
    }

    public function actionInstead()
    {
        $instead = $this->actionRelative();
        print_r($instead);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值