Yii2.0 對數據庫查詢的一些簡單的操做php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
User::findOne(
$id
);
//此方法返回 主鍵 id=1 的一條數據(舉個例子);
User::find()->where([
'name'
=>
'老司機'
])->one();
//此方法返回 ['name' => '老司機'] 的一條數據;
User::find()->where([
'name'
=>
'老司機'
])->all();
//此方法返回 ['name' => '老司機'] 的全部數據;
User::find()->orderBy(
'id DESC'
)->all();
//此方法是排序查詢;
User::findBySql(
'SELECT * FROM user'
)->all();
//此方法是用 sql 語句查詢 user 表裏面的全部數據;
User::findBySql(
'SELECT * FROM user'
)->one();
//此方法是用 sql 語句查詢 user 表裏面的一條數據;
User::find()->where(
"sex=:sex and age>:age"
, [
':sex'
=>
'男'
,
'age'
=>
'24'
])->
count
(
'id'
);
//統計符合條件的總條數;
User::find()->andWhere([
'sex'
=>
'男'
,
'age'
=>
'24'
])->
count
(
'id'
);
//統計符合條件的總條數;
User::find()->andFilterWhere([
'like'
,
'name'
,
'老司機'
]);
//此方法是用 like 查詢 name 等於 老司機的 數據
User::find()->one();
//此方法返回一條數據;
User::find()->all();
//此方法返回全部數據;
User::find()->
count
();
//此方法返回記錄的數量;
User::find()->average();
///此方法返回指定列的平均值;
User::find()->min();
//此方法返回指定列的最小值 ;
User::find()->max();
//此方法返回指定列的最大值 ;
User::find()->scalar();
//此方法返回值的第一行第一列的查詢結果;
User::find()->column();
//此方法返回查詢結果中的第一列的值;
User::find()->exists();
//此方法返回一個值指示是否包含查詢結果的數據行;
User::find()->batch(10);
//每次取 10 條數據
User::find()->each(10);
//每次取 10 條數據, 迭代查詢
|
直接操做數據庫 - 添加web
1
2
3
4
5
6
7
8
9
10
11
|
$connection
= \Yii::
$app
->db;
$table
=
'{{%user}}'
;
$data
= [
"name"
=>
$name
,
];
$result
=
$connection
->createCommand()->insert(
$table
,
$data
)->execute();
//返回數量
if
(
$result
){
return
[
"status"
=>1,
"info"
=>
"保存成功"
,
"url"
=>Url::to([
'user/index'
])];
}
else
{
return
[
"status"
=>0,
"info"
=>
"保存失敗"
];
}
|
直接操做數據庫 - 批量插入sql
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$connection
= \Yii::
$app
->db;
$table
=
'{{%goods}}'
;
$data
= [
"name"
=>
"商品名稱"
,
"price"
=>
"25.63"
,
];
$lebels
= [
'name'
,
'price'
];
$result
=
$connection
->createCommand()->batchInsert(
$table
,
$lebels
,
$data
)->execute();
if
(
$result
){
return
[
"status"
=>1,
"info"
=>
"保存成功"
,
"url"
=>Url::to([
'goods/list'
])];
}
else
{
return
[
"status"
=>0,
"info"
=>
"保存失敗"
];
}
|
直接操做數據庫 - 修改數據庫
1
2
3
4
5
6
7
8
9
10
11
|
$connection
= \Yii::
$app
->db;
$table
=
'{{%user}}'
;
$data
= [
"name"
=>
$name
,
];
$result
=
$connection
->createCommand()->update(
$table
, [
'name'
=>
$data
[
"name"
]], [
'id'
=>
intval
(
$data
[
"id"
]),
'uid'
=>
$uid
])->execute();
//返回數量
if
(
$result
){
return
[
"status"
=>1,
"info"
=>
"保存成功"
,
"url"
=>Url::to([
'buyer/goods'
,
'id'
=>
$data
[
"id"
]])];
}
else
{
return
[
"status"
=>0,
"info"
=>
"保存失敗"
];
}
|
直接操做數據庫 - 刪除瀏覽器
1
2
3
4
5
6
|
$data
=
$connection
->createCommand()->
delete
(
$table
, [
"uid"
=>
$uid
,
"id"
=>
$id
])->execute();
//返回數量
if
(!
$data
){
return
[
"status"
=>0,
"info"
=>
"刪除失敗 [沒有找到相應內容]"
];
}
else
{
return
[
"status"
=>1,
"info"
=>
"成功刪除"
.
$data
.
"條記錄"
];
}
|
直接操做數據庫 - 查詢緩存
1
2
3
4
5
6
7
|
$uid
= Yii::
$app
->user->id;
$table
=
'{{%shop}}'
;
$query
=
new
Query;
$data
=
$query
->from(
$table
)->where([
"uid"
=>
$uid
])->one();
if
(
$data
===false){
throw
new
\yii\web\NotFoundHttpException(
'店鋪不存在'
);
}
|
設置錯誤提示yii2
1
2
|
Yii::
$app
->session->setFlash(
'info'
,
'添加成功'
);
//類型能夠爲:error、danger、success、info、warning
return
$this
->refresh();
//返回上一頁並刷新
|
顯示上面設置的錯誤提示session
1
2
3
|
if
( Yii::
$app
->session->hasFlash(
'info'
) ) {
echo
Yii::
$app
->session->getFlash(
'info'
);
}
|
設置模型驗證器返回的錯誤app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
if
(
$model
->getErrors() ) {
$msg
=
''
;
foreach
(
$model
->getErrors()
as
$k
=>
$v
){
$msg
.=
'<p>• '
.
$v
[0].
'</p>'
;
}
echo
$msg
;
}
//或顯示第一個錯誤信息:
if
(
$model
->getErrors()){
return
[
"status"
=>0,
"info"
=>
array_values
(
$model
->getFirstErrors())[0]];
}
else
{
return
[
"status"
=>1,
"info"
=>
"成功"
];
}
|
SCENARIO 場景frontend
1
2
|
$user
=
new
User();
$user
->scenario =
"login"
;
//登陸場景
|
REQUEST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Yii::
$app
->request->get(
'id'
, 0);
Yii::
$app
->request->post(
'name'
);
if
(Yii::
$app
->request->isGet){ }
if
(Yii::
$app
->request->isPost){ }
if
(Yii::
$app
->request->isAjax){ }
//返回首頁
Yii::
$app
->homeUrl
//返回上一頁
return
$this
->goBack();
//當字符串中帶有空格或者括號等會引發瀏覽器曲解,就要加上Html::encode進行Html編碼的轉換,以防出現一些沒必要要的錯誤
Html::encode(
$this
->title);
//獲取IP
Yii::
$app
->getRequest()->getUserIP();
|
獲取config/main.php配置的值
1
|
Yii::
$app
->authManager->assignmentTable
|
獲取config/params.php配置的值
1
|
Yii::
$app
->params[
'paramsName'
]
|
yii2中經常使用路徑
1
2
3
4
5
6
7
8
|
項目路徑:Yii::
$app
->BasePath 或 Yii::getAlias(
'@app'
) 輸出E:\website\wx\wwwroot\backend
根目錄路徑:dirname(Yii::
$app
->BasePath) 或 dirname(Yii::getAlias(
'@app'
)) 輸出E:\website\wx\wwwroot
根目錄下的任意目錄:dirname(Yii::
$app
->BasePath).
'/uploads'
或 dirname(Yii::getAlias(
'@app'
)).
'/uploads'
$backend
=
str_ireplace
(dirname(Yii::getAlias(
'@frontend'
)),
""
, Yii::getAlias(
'@backend'
));
$url
= Url::to([
'/goods/view'
,
'id'
=> 5]);
$url
=
str_ireplace
(
$backend
,
""
,
$url
);
$url
= Yii::
$app
->params[
'site_url'
] .
$url
;
|
文件緩存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
//將信息寫入緩存
$cache
= Yii::
$app
->cache;
$cache
->set(
"cacheName"
,
$cacheData
);
//從緩存取出信息
$cache
= Yii::
$app
->cache;
$data
=
$cache
->get(
"cacheName"
);
if
(
$data
){
//讀取成功
}
//刪除指定的緩存
$cache
= Yii::
$app
->cache;
$cache
->
delete
(
"cacheName"
);
yii\caching\Cache::get():經過一個指定的鍵(key)從緩存中取回一項數據。若是該項數據不存在於緩存中或者已通過期/失效,則返回值 false。
yii\caching\Cache::set():將一項數據指定一個鍵,存放到緩存中。
yii\caching\Cache::add():若是緩存中未找到該鍵,則將指定數據存放到緩存中。
yii\caching\Cache::mget():經過指定的多個鍵從緩存中取回多項數據。
yii\caching\Cache::mset():將多項數據存儲到緩存中,每項數據對應一個鍵。
yii\caching\Cache::madd():將多項數據存儲到緩存中,每項數據對應一個鍵。若是某個鍵已經存在於緩存中,則該項數據會被跳過。
yii\caching\Cache::exists():返回一個值,指明某個鍵是否存在於緩存中。
yii\caching\Cache::
delete
():經過一個鍵,刪除緩存中對應的值。
yii\caching\Cache::
flush
():刪除緩存中的全部數據。
|
用戶相關
1
2
3
4
5
6
7
8
9
10
11
|
//判斷用戶是否登陸
if
(Yii::
$app
->user->isGuest){
//未登陸
}
else
{
//已登陸
}
//取得用戶信息
$user
= Yii::
$app
->user->identity;
echo
$user
->username;
echo
$user
[
"username"
];
|
跳轉
1
|
return
Yii::
$app
->response->redirect([
"/shop/apply"
], 302);
|