Yii2.0 对数据库查询的一些简单的操作

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 条数据, 迭代查询

直接操作数据库 - 添加

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"=>"保存失败"];
}

直接操作数据库 - 批量插入

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('店铺不存在');
}

设置错误提示

1
2
Yii::$app->session->setFlash('info', '添加成功'); //类型可以为:error、danger、success、info、warning
return $this->refresh(); //返回上一页并刷新

显示上面设置的错误提示

1
2
3
if( Yii::$app->session->hasFlash('info') ) {
    echo Yii::$app->session->getFlash('info');
}

设置模型验证器返回的错误

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 场景

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

Yii2 常用代码集合的更多相关文章

  1. phpcms v9模板制作常用代码集合(转)

    phpcms v9模板制作常用代码集合(个人收藏) 1.截取调用标题长度 {str_cut($r[title],36,'')} 2.格式化时间 调用格式化时间 2011-05-06 11:22:33 ...

  2. phpcms v9模板制作常用代码集合

    phpcms v9模板制作常用代码集合(个人收藏) 1.截取调用标题长度 {str_cut($r[title],36,'')} 2.格式化时间 调用格式化时间 2011-05-06 11:22:33 ...

  3. SAP屏幕字段常用代码集合

    SAP屏幕字段常用代码集合 ().Screen 设计 TABLES: SSCRFIELDS. PARAMETERS: P_EBLEN LIKE VBRK-EBLEN DEFAULT ' '. PARA ...

  4. ExtJS常用代码集合

    ExtJS常用代码集合,包括弹出提示框,登陆框,树状结构等等.​1. [代码]弹出提示框     <html>    <head>        <title>Ge ...

  5. C#常用代码集合(1)

    引用自james li的博客,地址:http://www.cnblogs.com/JamesLi2015/p/3147986.html   1 读取操作系统和CLR的版本   OperatingSys ...

  6. Android常用代码集合

    这篇文章主要记录一些常用的一些代码段,方便以后查阅,不断更新中. 1:调用浏览器,载入某网址 1 2 3 Uri uri = Uri.parse("http://www.android-st ...

  7. Unity3D常用代码集合

    1.基本碰撞检测代码 function OnCollisionEnter(theCollision : Collision){         if(theCollision.gameObject.n ...

  8. Android 常用代码大集合 [转]

    [Android]调用字符串资源的几种方法   字符串资源的定义 文件路径:res/values/strings.xml 字符串资源定义示例: <?xml version="1.0&q ...

  9. Java 常用List集合使用场景分析

    Java 常用List集合使用场景分析 过年前的最后一篇,本章通过介绍ArrayList,LinkedList,Vector,CopyOnWriteArrayList 底层实现原理和四个集合的区别.让 ...

随机推荐

  1. springboot 项目部署后 404的问题

    是因为打包的时候,没有把webapp打包进去 pom.xml 在build 里加入下面的依赖即可 <!-- resources插件,在打jar包时可以将webapp目录下的文件进行打包 --&g ...

  2. 关于wordpress文章分类显示404错误的解决办法。

    闲来无事,在虚拟主机上装了一个wordpress尝试自己搭一个博客玩一下,发现文章分类一直显示404错误,网上查了好久,终于找到解决方法,其实很简单,只要将分类的别名改成英文的就解决了,分类中不能包含 ...

  3. LeetCode 105. 从前序与中序遍历序列构造二叉树(Construct Binary Tree from Preorder and Inorder Traversal)

    题目描述 根据一棵树的前序遍历与中序遍历构造二叉树. 注意:你可以假设树中没有重复的元素. 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9, ...

  4. Java-数据类型与编码(ASCII、Unicode 和 UTF-8)

    机械硬盘硬件结构(了解)https://diy.pconline.com.cn/cpu/study_cpu/1009/2215404_all.html 一.数据储存单位 1.bit(位) https: ...

  5. 如何实现一个串行promise

    异步执行任务A.B.C,...... 1.使用数组的reduce方法,reduce里有四个参数,pre,next,index,arr, 2.如果then方法里返回的是一个promise对象,那么执行下 ...

  6. vue 登录页面填坑

    上边的导航头,会显示在登陆页面上,暂时的解决办法实: <template> <div style="position: fixed; top:0px; left:0px;h ...

  7. wpf webbrowser取消js报错

    private void WebBrowser_Navigated(object sender, NavigationEventArgs e) { SuppressScriptErrors((WebB ...

  8. linux命令行下常用快捷键

    快捷键的使用: ctrl+d或者使用logout.exit退出终端ctrl+a跳到开始ctrl+e跳到最后ctrl+u向前删除ctrl+k向后删除ctrl+c中断命令ctrl+z暂停命令 fg:将暂停 ...

  9. 五十一:数据库之Flask-Migrate详解

    在实际开发中,经常会发生数据库修改行为,一般数据库修改不是直接手动修改,而是去修改ORM模型,然后再把模型映射到数据库中,这些操作可以通过flask-migrate实现,flask-migrate是基 ...

  10. kubernetes学习:CKA考试认证(二)

    1. 它题的意思是 在 development 名称空间里面 找到名为 baz的 service 然后通过这个service的selector 找出 对应的pod . 要用   kubectl des ...