一、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); }