TP

  • 使用db助手函数默认每次都会重新连接数据库,而使用Db::name或者Db::table方法的话都是单例的。

  • 验证器

    $validate = validate('User');
    if(!$validate->check($data)){
        dump($validate->getError());
    }
    
  • TP事务

    //启动事务
    Db::startTrans();
    //失败,回滚
    db::rollback();
    //成功,提交
    db::commit(); 
    
  • TP3 多条件查询 whereor and

    //式子
    $order=M('order_info');
    $where['order_status']=5;
    $where['shipping_status']=2;
    $map['_complex'] = $where;
    $map['order_status']=6;
    $map['_logic'] = 'or';  
    $final['_complex'] = $map;
    $final['user_id']=1;
    //生成的mysql语句
    SELECT * FROM `ecs_order_info` WHERE ( ( `order_status` = 5 AND `shipping_status` = 2 ) OR `order_status` = 6 ) AND `user_id` = 1
    ```TP3 多条件查询 whereor and
    
    ```php
    //式子
    $order=M('order_info');
    $where['order_status']=5;
    $where['shipping_status']=2;
    $map['_complex'] = $where;
    $map['order_status']=6;
    $map['_logic'] = 'or';  
    $final['_complex'] = $map;
    $final['user_id']=1;
    //生成的mysql语句
    SELECT * FROM `ecs_order_info` WHERE ( ( `order_status` = 5 AND `shipping_status` = 2 ) OR `order_status` = 6 ) AND `user_id` = 1
    
  • tp3 同字段多条件查询

    $hideArr = array('%模式%','%卡券%','%正式%','%测试%');
    $where['Describe']  = array('notlike',$hideArr,'And');
    
  • tp3 同key 被覆盖的问题

    $whereArr['where']['_string'] = '`Describe` NOT REGEXP "('.implode('|', $hideArr).')"';
    //tp5已经可以直接用regxp
    
  • 同字段或 or

    //句式
    $where = array(
                ['Market','eq',1],
                ['Current','lt','5'],
                ['StockCode|StockName','like','%12%']
            ); 
    
    //mysql语句
    SELECT * FROM `tb_log_redies_minutes` WHERE  `Market` = 1  AND `Current` < 5  AND ( `StockCode` LIKE '%12%' OR `StockName` LIKE '%12%' )
    
  • TP5 and or 一起用

    $courseArr = Db::name('course_buy')->where(function($query) use($MemberIds){
       $query->where('Type',1)->whereor('ExpirationDate','>', date('Y-m-d'));
    })->where('MemberId','in',$MemberIds)->group('MemberId')->column('(sum(Nums)-sum(SurplusNums)) as Lessons,sum(SurplusNums) as Surplus','MemberId');
    
    SELECT `MemberId`,(sum(Nums)-sum(SurplusNums)) as Lessons,sum(SurplusNums) as Surplus FROM `tb_course_buy` WHERE  ( `Type` = 1 OR `ExpirationDate` > '2019-10-18' )  AND `MemberId` IN (29,12) GROUP BY `MemberId`
    
  • 同时自增自减修改多个数据

    $bill_update_field = array(
                'QuotaMoney'  => Db::raw("QuotaMoney+{$add_quota}"),
                'QuotaStorage'=> Db::raw("QuotaStorage+{$total_quota_storage}"),
                'AddStorage'=> Db::raw("AddStorage+{$total_quota_storage}"),
                'AddQuotaNums'=> Db::raw("AddQuotaNums+1"),
            );
    
  • 调用存储过程

    $sql = "call proc_shift_intermediary_special({$specialId},{$saleId},@result)";
    $res = Db::query($sql);
    
posted @ 2021-02-23 23:54  蔻嘚儿  阅读(435)  评论(0)    收藏  举报