1. 模型
    1. orderby的使用:
      ->orderBy(['addtime'=>SORT_DESC, 'sort'=>SORT_ASC])->all()
    2. 在使用find()查询的时候, 指定查询字段:
      find()->select('id, title, content') 指定查询的字段
    3. 块赋值, 使用attributes, 比如 $psychological->attributes = $input; 把数组一次性赋值给attributes 属性, 但是要注意, 要确保模型类中的rules方法, 已经包含了要赋值的字段. 否则attributes 属性接收不到值. 就不能保存成功
    4. where 作为查询条件单独拿出来的时候, 想使用  <  >  >=  <=  <>  进行范围查询的时候, 要怎么写?
      1. $where = [
      2. 'and',
      3. ['<', 'minscore', $score],
      4. ['>', 'maxscore', $score],
      5. ];
      6. //查询满足minscore<$score并且maxscore>$score 的记录
        -
        //随机查询数据库中的数据
      1. $ids = [];
        for($i=1; $i<=15; $i++){
        $ids[] = mt_rand(1,3993); //生成随机数组
        }
      1. $where = [
        'and',
        ['in', 'id', $ids], //查询id 在 $ids 数组里的数据
        ];
    5. yii2中同时连接两个或以上数据库:(如果在本地开发完,传到线上服务器, 需要把配置的数据库的用户名和密码改成线上数据库的
      )
      1. 在config目录下web.php文件中的components数组里配置

        1. 'db2' => [
        2. 'class' => 'yii\db\Connection',
        3. 'dsn' => 'mysql:host=localhost;dbname=quickapp',
        4. 'username' => 'root',
        5. 'password' => 'root',
        6. 'charset' => 'utf8',
        7. ],
      2. 在继承ActiveRecord的模型中设置表名,rules等,必须要注意一点, yii默认连接的是components里面的db设置的数据库, 所以当连接其他数据库的时候, 就必须要重写 getDb() 方法, 很简单

        1. public static function getDb()
        2. {
        3. return \Yii::$app->db2; //db2就是components里的db2下标
        4. }

        OK, 可以使用了.

    6.  yii打印SQL语句:
      1. echo RecycleModel::find()
      2. ->alias('r')
      3. ->select('r.name as rubbish, c.id, c.name, c.code, c.inc, c.des,c.req')
      4. ->leftJoin(['c'=>RecycleCateModel::tableName()], 'r.category_id=c.id')
      5. ->where($where)
      6. ->orderBy(['modified'=>SORT_DESC])
      7. ->limit('10')
      8. ->asArray()->createCommand()->getRawSql();exit;
    7. 添加数据()

      1. $usercode = \Yii::$app->db->createCommand()
      2. ->batchInsert(UserVoucher::tableName(), ['code', 'cat_id','userId', 'gettime', 'expire'], [
      3. [$code['code'], $id, $userId, time(), $code['expire']],
      4. ])->execute(); // \Yii::$app->db 这里的db, 如果换成db2, 就是往db2数据库里插入数据.
    8. 连表查询分页
      1. $count = VoucherCode::find()
        ->alias('v')
        ->leftJoin(['c'=>RubbishCate::tableName()], 'v.cat_id=c.id and v.is_delete=0')
        ->where($where)
        ->count(); //查询符合连表数据总数
        $p = new Pagination(['totalCount'=>$count, 'pageSize'=>15]);
        $code = VoucherCode::find()
        ->alias('v')
        ->leftJoin(['c'=>RubbishCate::tableName()], 'v.cat_id=c.id and v.is_delete=0')
        ->select('v.*, c.name')
        ->where($where)
        ->offset($p->offset)
        ->limit($p->limit)
        ->asArray()
        ->all(); //查询数据
        return $this->render('/rubbish-voucher/list', ['code'=>$code, 'pagination'=>$p]);
        //views视图调用
      1. <?php echo \yii\widgets\LinkPager::widget([
        'pagination' => $pagination,
        'prevPageLabel' => '上一页',
        'nextPageLabel' => '下一页',
        'firstPageLabel' => '首页',
        'lastPageLabel' => '尾页',
        'maxButtonCount' => 5,
        'options' => [
        'class' => 'pagination',
        ],
        'prevPageCssClass' => 'page-item',
        'pageCssClass' => "page-item",
        'nextPageCssClass' => 'page-item',
        'firstPageCssClass' => 'page-item',
        'lastPageCssClass' => 'page-item',
        'linkOptions' => [
        'class' => 'page-link',
        ],
        'disabledListItemSubTagOptions' => ['tag' => 'a', 'class' => 'page-link'],
        ])
        ?>
    9. 条件查询:
      1. $status = \Yii::$app->request->get('status', ''); //获取用户传入的条件
      2. $where = [];
      3. if($status != ''){
      4. $where['status'] = $status;
      5. }
      6. $where['is_delete'] = 0;
    10. 多对多关联
      1. //课程表和用户表多对多关联, 课程course模型里获取用户表字段, 中间表为 user_course, 中间表写在viaTable()里
        public function getUser()
      2. {
      3. return $this->hasMany(User::className(), ['id'=>'uid'])->viaTable('user_course', ['course_id'=>'id']);
      4. }
      5. //或者使用via()
      6. //获取关联表的属性
      7. $user = Course::findOne($v['id'])->user;
      8. //统计有多少人
      9. $num = count(Course::findOne($v['id'])->user);
    11. 接口返回分页数据
      1. $count = Course::find()->where($where)->count(); //数据总数
      2. $p = new Pagination(['totalCount'=>$count, 'pageSize'=>$pagesize]); //实例化分页类
      3. $course = Course::find()->select('id, title, pic_url, sections, teacher, fee, free')->where($where)->offset(($page-1)*$pagesize)->limit($p->limit)->all(); //前端传入第几页$page和每页显示多少条$pagesize, 主要是offset方法里的参数怎么写

      或者这么写

      1. $course = Course::find()->select('id, title, pic_url, sections, teacher, fee, free')->where($where)->offset(($page-1)*$pagesize)->limit($pagesize)->all();
    12. $model->errors; 打印数据验证过程中的错误信息 
    13. 根据where条件查询指定字段, 拼接field时候, 如果有重复字段仍然可以正常查询的. 并且如果没有指定where条件, 默认查询几个字段
      1. if(isset($refund_rate))
      2. $where['refund_rate'] = $refund_rate;
      3. if(isset($row_sate_rate))
      4. $where['row_sate_rate'] = $row_sate_rate;
      5. if(isset($film_playnum))
      6. $where['film_playnum'] = $film_playnum;
      7. if(isset($layout_ratio))
      8. $where['layout_ratio'] = $layout_ratio;
      9. if(isset($person_time))
      10. $where['person_time'] = $person_time;
        if(isset($date))
        $where['date'] = $date;
      11. //设置查询的指定字段
      12. $field = '';
      13. if(isset($where)){
      14. $field = implode(',', array_keys($where));
      15. }
      16. $field .= ', id, movie_name, split_box_total, synthesize_total, date '; //多加date 并不会报错
      17. $result = TicketMovie::find()->select($field)->where($where)->offset(($page-1)*$pagesize)->limit($pagesize)->asArray()->all();

yii框架学习(二)的更多相关文章

  1. Yii框架学习笔记(二)将html前端模板整合到框架中

    选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/ ...

  2. Yii框架学习 新手教程(一)

    本人小菜鸟一仅仅,为了自我学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识,小菜鸟创建了一个群.希望光临本博客的人能够进来交流.寻求 ...

  3. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  4. YII框架学习(二)

    YII框架的增删改查 例:一个新闻表的增删改查: (1)首先使用gii工具生成控制器和模型 (2)控制器 <?php class NewsController extends Controlle ...

  5. Yii 框架学习--01 框架入门

    Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...

  6. PHP开发框架之YII框架学习——碾压ThinkPHP不是梦

      前  言 JRedu 程序猿是一种慵懒的生物!能少敲一行代码,绝对不会多敲一个字符!所以,越来越多的开发框架应运而生,在帮助我们完成功能的同时,极大程度上也帮我们节省了人力物力,而且也提高了系统的 ...

  7. Yii框架学习资源盘点

    盘点一些Yii框架的常用学习资源. 1.Yii中文论坛 https://www.yiichina.com/ 2.Yii中文网 http://www.yii-china.com/ 3.魏曦教你学Yii2 ...

  8. <yii 框架学习> yii 框架改为中文提示

    工作需要用到yii框架,但发现yii框架自带的提示都是英文的.上网找资料才发现其实可以自己陪置 . 将项目protected/config/main.php里的app配置加上language=> ...

  9. YII框架学习(一)

    1.安装: windows:将php命令所在的文件夹路径加入到环境变量中,通过cmd命令:进入yii框架中的framework目录,执行: php yiic webapp ../cms linux:类 ...

随机推荐

  1. 第十三章 字符串(一)之 String

    这一节来学习String的特性和方法. 一.String对象的不变性 不变性:String对象是由一个final char[] value 数组实现的,因此String对象是不可变的.任何看起来改变S ...

  2. 函数&回调函数&匿名函数&自调函数

  3. Java基础题记录

    1. 装箱和拆箱 装箱:自动将基本数据类型转换为包装器类型即引用数据类型 拆箱:将包装器类型转换为基本数据类型 2. Java的8中基本数据类型 关键字 字节数 范围 默认值 boolelan 1by ...

  4. [开源] LaravelPlus - 基于 Laravel 魔改,为方便实际业务使用 - 开发中

    目的 为了减少重复 CURD 和新项目的配置麻烦等问题,(就是为了骗星星:LaravelPlus )如: 现有的 infyomlabs/laravel-generator CODE 生成工具虽然好用, ...

  5. Sql 中的索引

    转载:https://www.cnblogs.com/hyd1213126/p/5828937.html

  6. [C#]访问共享文件夹或者磁盘(需要用户名密码)

    有项目要求使用对方本地管理员访问访问对方D盘,网上找到一段API,刚开始可以使用一段时间,升级到1903就失效了,一脸懵逼啊 using System; using System.Collection ...

  7. ModbusRtu通信报文详解【二】

    这里接着上一篇内容对ModbusRtu的通信报文做个详细描述: [1]强制单个线圈 功能码:05H [2]预置单个寄存器 功能码:06H [3]强制多个线圈 功能码;0FH [4]预置多个寄存器 功能 ...

  8. A Pythonic Card Deck: __len__ & __getitem__ & for 循环的嵌套

    1. 列表生成式的嵌套 for 循环: 示例如下: li1 = range(1,6) li2 = list("ABC") # list("ABC") 的结果为 ...

  9. canva绘制圆角矩形

    在做组态的时候,需要支持矩形圆角格式,但是因为canvas本身不带有圆角矩形,需要自行算出坐标进行绘制 方案一.统一圆角 <!DOCTYPE html> <html> < ...

  10. day8 socket

    代码: 例子1:socket tcp 通讯 server端 import socketserver = socket.socket()ip_port = ("127.0.0.1", ...