• Thinkphp 整理备忘 杂记


    1:输出变量函数  (手册目录:控制器-输出变量)

      I('变量类型.变量名',['默认值'],['过滤方法'],['额外数据源'])

      例:$title = I('post.title','','strip_tags');


    2:判断是否是POST方式提交 (手册目录:控制器-请求类型)

                                         (手册目录:附录-常亮参考)

      IS_POST  是系统常亮,判断当前是否POST请求

      例如:   if (IS_POST){  …………   }


    3: 分页

    $User = M('User'); // 实例化User对象
    $count      = $User->where('status=1')->count();// 查询满足要求的总记录数
    $Page       = new ThinkPage($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25)
    $show       = $Page->show();// 分页显示输出
    // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
    $list = $User->where('status=1')->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select();
    $this->assign('list',$list);// 赋值数据集
    $this->assign('page',$show);// 赋值分页输出
    $this->display(); // 输出模板

     4:Thinkphp使用多个_string

         下面这一种情况,出现两个_string,第一个string会把第二个给覆盖掉

        $map["a"]=1;

        $map["_string"]="条件1 or 条件2";
        $map["_string"]="条件3";

             解决办法:

        $map["a"]=1;

        $map["_string"]=" ( 条件1 or 条件2 ) ";
        $map["_string"]  .  =" and 条件3";

               生成的sql语句为:where a=1 AND (  (条件1 OR 条件2) and 条件3  )


    5:大小写引起的错误

        1- 读取配置 C('参数名称'),‘参数名称’的定义和调用时,最好都统一大写。


    6:加载公共模块的service

      $service = new  CommonServicexxxxx();


    7:CURD返回值

    http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html

    http://doc.thinkphp.cn/manual/curd.html

    ①、save()方法:

      返回值是影响的记录数,如果返回false则表示更新出错,因此一定要用恒等来判断是否更新失败。

    $result=$model->save();
    if ($result === FALSE) {
        echo '修改失败';
    } elseif($result === 0)  {
        echo '未作任何修改';
    } else {
        echo '修改成功';       
    }

    ②、Count 、Max、Min 、Avg 、Sum返回值
      如果查询出错,返回值为false
      查询成功,则返回对应的值。(如0、1、2)

    ③、find方法:

      如果查询出错返回:false,

      查询结果为空返回:NULL

      查询成功则返回一个关联数组(键值是字段名或者别名)。

    ④、add()方法:

          如果数据非法或者查询错误则返回false
      如果是自增主键 则返回主键值,否则返回1

    8:使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT

    M(“bus”)->where($where_ybj)->group('ordert')->count("DISTINCT orderid");


    9:日志

                $log = print_r($useramount_admin_info, true);
                Log::record($log, 'DEBUG');


    10:多表查询( 连接查询)    

      方法一:使用table()方法  

            $tables = "b_bus bus,b_waidiao_businfo wd";
    
            $wdbl_map['bus.license'] = array('like',"%$select_license%");
            $wdbl_map["wd.type"] = 1;
            $wdbl_map["wd.status"] = 1;
            $wdbl_map["_string"] = "wd.busid = bus.id";
    
            $waidoao_disposable_bus_info_list = M()->table($tables)->where($wdbl_map)->field('bus  .*')->group('wd.busid')->order("wd.id desc")->select();
    

       方法二:使用join() 方法


    11、TP5:扩展配置目录   

      extra      config('status.ps')


    12:如何在一个模块Action中直接执行另一个模块的Action

      A方法:用于在内部实例化控制器,调用格式:
      A('[项目://][分组/]模块','控制器层名称')

    A('Home/Common');

    13:A方法、R方法、D方法、M方法的区别

      A方法只是对象的实例化,而R方法是可以同时实例化对象里面的方法的。

      Thinkphp 3.2.3 A()和R()方法都是对控制器类的实例化,R()方法比A()写法更简便,R()方法能直接返回类中方法返回的信息。R()方法里面封装了A()方法。

      

    // A方法
    $test_m=A("Home/Goods");
    echo $test_m->test();
    
    // R方法
    echo R("Home/Goods/test");

      我们在Model的数据模型里面,必然需要下面的两种方法,一个是D方法,一个是M方法,前者是实例化数据模型类,而后者则是实例化数据模型的父类。


    14:Thinkphp中的 I 函数(Thinkphp3.2.3版本)  I方法

      I 函数的作用是获取系统变量,必要时还可以对变量值进行过滤及强制转化,I 函数的语法格式:

    I('变量类型.变量名/修饰符',['默认值'],['过滤方法或正则'],['额外数据源'])

      在PHP中获取变量值的方法有很多,比如:$_GET['变量名'],$_POST['变量名'],$_SESSION['变量名'],$_COOKIE['变量名'],$_SERVER['变量名'] 都可以获取相应的变量值,但在thinkphp中为了安全的原因建议统一使用 I 函数来获取变量值。例如:获取 URL 地址栏中参数 id 的值,在php中我们用 $_GET['id'] 来获取,在thinkphp中我们可以用 I('get.id') 来获取。同样的, $_POST['id'] 就用 I('post.id') 取代。


    15:Thinkphp中的U函数(Thinkphp3.2.3版本)

      U函数的作用是根据当前的URL设置生成对应的URL地址,使用U函数可以确保项目在移植过程中不受环境的影响。

      U方法的定义规则如下(方括号内参数根据实际应用决定):

      U('地址表达式',['参数'],['伪静态后缀'],['显示域名'])

    16:getField用法总结

       getField方法是ThinkPHP中用来获取字段值的方法,区别于select和find方法,通常仅用于获取个别字段的值。但是事实上并没有那么简单,该方法的用法总结如下:
     
      ① 获取某个字段值:
        $User = M("User"); // 实例化User对象
        // 获取ID为3的用户的昵称 
        $nickname = $User->where('id=3')->getField('nickname');

      ② 获取某个字段列  

        $User = M("User"); // 实例化User对象
        // 获取status为1的用户的昵称列表
        $nickname = $User->where('status=1')->getField('nickname',true);

      第二个参数传入了true,返回的nickname则是一个数组,包含了所有满足条件的昵称列表。

      如果需要限制返回结果数量,可以使用:

    $nickname = $User->where('status=1')->getField('nickname',8);

      ③ 获取2个字段列表

        $User = M("User"); // 实例化User对象
        // 获取status为1的用户的昵称列表
        $nickname = $User->where('status=1')->getField('id,nickname');

      ④:更多用法:http://www.thinkphp.cn/info/174.html


    thinkphp5获取控制器名、模型名、方法名的代码

            $request=  hinkRequest::instance();
            dump($request->controller()); //获取控制器名
            dump($request->module());  //获取模型名
            dump($request->action()); //获取方法名


    500、表达式中运算符条件的查询

     SQL运算符例子实际查询条件
    eq = $map['id'] = array('eq',100); 等效于:$map['id'] = 100;
    neq != $map['id'] = array('neq',100); id != 100
    gt > $map['id'] = array('gt',100); id > 100
    egt >= $map['id'] = array('egt',100); id >= 100
    lt < $map['id'] = array('lt',100); id < 100
    elt <= $map['id'] = array('elt',100); id <= 100
    like like $map<'username'> = array('like','Admin%'); username like 'Admin%'
    between between and $map['id'] = array('between','1,8'); id BETWEEN 1 AND 8
    not between not between and $map['id'] = array('not between','1,8'); id NOT BETWEEN 1 AND 8
    in in $map['id'] = array('in','1,5,8'); id in(1,5,8)
    not in not in $map['id'] = array('not in','1,5,8'); id not in(1,5,8)
    and(默认) and $map['id'] = array(array('gt',1),array('lt',10)); (id > 1) AND (id < 10)
    or or $map['id'] = array(array('gt',3),array('lt',10), 'or'); (id > 3) OR (id < 10)
    xor(异或) xor 两个输入中只有一个是true时,结果为true,否则为false,例子略。 1 xor 1 = 0
    exp 综合表达式

    $map['id'] = array('exp','in(1,3,8)');

    $map['sum'] = array('exp','`sum`+'.$shuliang);

    $map['id'] = array('in','1,3,8');

     


  • 相关阅读:
    5G NR系列(四)物理下行共享信道(PDSCH)物理层过程详解
    5G NR系列(三)PDSCH的解调参考信号(DM-RS)
    Mac上重装pycharm打不开的解决方法
    Oracle parallel理解
    V$ASM_DISKGROUP视图信息解读
    深入了解 Oracle Flex ASM 及其优点
    使用typora和印象笔记高效输出
    Centos7.6部署k8s 集群
    DBA日常职责
    利用DCLI命令实现跨机器检查
  • 原文地址:https://www.cnblogs.com/wangyuman26/p/5556981.html
Copyright © 2020-2023  润新知