关于yii:yii-速查手册

7次阅读

共计 4150 个字符,预计需要花费 11 分钟才能阅读完成。

生成 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);
}
正文完
 0