生成url
use yii\helpers\Url;
$url = Url::to(['post/view', 'id' => 100]);
Url::to(['post/view', 'id' => 100, '#' => 'content'],true); 帶域名http://yii.api.shanliwawa.top:80/post/view?id=100#content
// 主頁URL:/index.php?r=site%2Findex
echo Url::home();
// 根URL,如果程序部署到一個Web目錄下的子目錄時非常有用
echo Url::base();
請求
$request = Yii::$app->request;
$get = $request->get('id');
$id = $request->get('id', 1); 不存在為1
$name = $request->post('name');
api中
$params = $request->bodyParams;
// 返回參數 "id"
$param = $request->getBodyParam('id');
if ($request->isAjax) { /* 該請求是一個 AJAX 請求 */ }
if ($request->isGet) { /* 請求方法是 GET */ }
if ($request->isPost) { /* 請求方法是 POST */ }
if ($request->isPut) { /* 請求方法是 PUT */ }
$userHost = Yii::$app->request->userHost;客户主機
$userIP = Yii::$app->request->userIP;客户ip
跳轉
yii\web\Response::redirect($url)
$this->redirect('http://example.com/new', 301);//控制器中
session
$session = Yii::$app->session;
// 獲取session中的變量值,以下用法是相同的:
$language = $session->get('language');
$language = $session['language'];
$language = isset($_SESSION['language']) ? $_SESSION['language'] : null;
// 設置一個session變量,以下用法是相同的:
$session->set('language', 'en-US');
$session['language'] = 'en-US';
$_SESSION['language'] = 'en-US';
// 刪除一個session變量,以下用法是相同的:
$session->remove('language');
unset($session['language']);
unset($_SESSION['language']);
// 檢查session變量是否已存在,以下用法是相同的:
if ($session->has('language')) ...
if (isset($session['language'])) ...
if (isset($_SESSION['language'])) ...
// 遍歷所有session變量,以下用法是相同的:
foreach ($session as $name => $value) ...
foreach ($_SESSION as $name => $value) ...
cookie
// 從 "request" 組件中獲取 cookie 集合(yii\web\CookieCollection)
$cookies = Yii::$app->request->cookies;
// 獲取名為 "language" cookie 的值,如果不存在,返回默認值 "en"
$language = $cookies->getValue('language', 'en');
// 另一種方式獲取名為 "language" cookie 的值
if (($cookie = $cookies->get('language')) !== null) {
$language = $cookie->value;
}
// 可將 $cookies 當作數組使用
if (isset($cookies['language'])) {
$language = $cookies['language']->value;
}
// 判斷是否存在名為"language" 的 cookie
if ($cookies->has('language')) ...
if (isset($cookies['language'])) ...
// 從 "response" 組件中獲取 cookie 集合(yii\web\CookieCollection)
$cookies = Yii::$app->response->cookies;
// 在要發送的響應中添加一個新的 cookie
$cookies->add(new \yii\web\Cookie([
'name' => 'language',
'value' => 'zh-CN',
]));
// 刪除一個 cookie
$cookies->remove('language');
// 等同於以下刪除代碼
unset($cookies['language']);
日誌
Yii::error('日誌文件');
數據庫
查詢多條
$posts = Yii::$app->db->createCommand('SELECT * FROM post')->queryAll();
查詢一條
$post = Yii::$app->db->createCommand('SELECT * FROM post WHERE id=1')->queryOne();
返回一列
$titles = Yii::$app->db->createCommand('SELECT title FROM post')->queryColumn();
返回標量
$count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM post')->queryScalar();
綁定參數
$post = Yii::$app->db->createCommand('SELECT * FROM post WHERE id=:id AND status=:status')
->bindValue(':id', $_GET['id'])
->bindValue(':status', 1)
->queryOne();
非查詢
Yii::$app->db->createCommand('UPDATE post SET status=1 WHERE id=1') ->execute();
Yii::$app->db->createCommand()->insert('user', [
'name' => 'Sam',
'age' => 30,
])->execute();
Yii::$app->db->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();
Yii::$app->db->createCommand()->delete('user', 'status = 0')->execute();
數據庫模型操作
one(): 根據查詢結果返回查詢的第一條記錄。
all(): 根據查詢結果返回所有記錄。
count(): 返回記錄的數量。
sum(): 返回指定列的總數。
average(): 返回指定列的平均值。
min(): 返回指定列的最小值。
max(): 返回指定列的最大值。
scalar(): 返回查詢結果的第一行中的第一列的值。
column(): 返回查詢結果中的第一列的值。
exists(): 返回一個值,該值指示查詢結果是否有數據。
where(): 添加查詢條件
with(): 該查詢應執行的關係列表。
indexBy(): 根據索引的列的名稱查詢結果。
asArray(): 以數組的形式返回每條記錄。
Customer::find()->one(); 此方法返回一條數據;
Customer::find()->all(); 此方法返回所有數據;
Customer::find()->count(); 此方法返回記錄的數量;
Customer::find()->average(); 此方法返回指定列的平均值;
Customer::find()->min(); 此方法返回指定列的最小值 ;
Customer::find()->max(); 此方法返回指定列的最大值 ;
Customer::find()->scalar(); 此方法返回值的第一行第一列的查詢結果;
Customer::find()->column(); 此方法返回查詢結果中的第一列的值;
Customer::find()->exists(); 此方法返回一個值指示是否包含查詢結果的數據行;
Customer::find()->asArray()->one(); 以數組形式返回一條數據;
Customer::find()->asArray()->all(); 以數組形式返回所有數據;
Customer::find()->where($condition)->asArray()->one(); 根據條件以數組形式返回一條數據;
Customer::find()->where($condition)->asArray()->all(); 根據條件以數組形式返回所有數據;
Customer::find()->where($condition)->asArray()->orderBy('id DESC')->all(); 根據條件以數組形式返回所有數據,並根據ID倒序;
redis
composer require yiisoft/yii2-redis
// 獲取 redis 組件
$redis = Yii::$app->redis;
// 判斷 key 為 username 的是否有值,有則打印,沒有則賦值
$key = 'username';
if ($val = $redis->get($key);) {
var_dump($val);
} else {
$redis->set($key, 'marko');
$redis->expire($key, 5);
}