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);
|