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 \Think\Page($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  \Common\Service\xxxxx();


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 === ) {
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',);

  ③ 获取2个字段列表

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

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


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

$request=  \think\Request::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');

Thinkphp 整理备忘 杂记的更多相关文章

  1. [转].NET进阶系列之一:C#正则表达式整理备忘

    本文转自:http://www.cnblogs.com/KissKnife/archive/2008/03/23/1118423.html 有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就 ...

  2. .NET进阶系列之一:C#正则表达式整理备忘

    有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到 好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的 ...

  3. 整理备忘一波liunx命令(持续更新)

    # 分区挂载 查看当前目录下的文件大小 du --max-depth= -h # 文件操作 # 编辑操作 #liunx 字体设置 苹果方字体下载安装 # 网洛端口 netstat命令各个参数说明如下: ...

  4. Redis集群搭建详细过程整理备忘

    三.安装配置 1.环境 使用2台centos服务器,每台机器上部署3个实例,集群为三个主节点与三个从节点: 192.168.5.144:6380 192.168.5.144:6381 192.168. ...

  5. Mysql又一次整理笔记--woods备忘

    ==============================SQL备忘 CRUD 查询 多表 事件等=============================== ------------------ ...

  6. [转] HTML5终极备忘大全(图片版+文字版)---张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1544 一.前言兼图片 ...

  7. [CSS3备忘] transform animation 等

    一些CSS不经常用就会忘记,好吧,现在整理再学习一下,也留做备忘,方便以后查看... perspective的理解: 1.数值越小,用户与3D空间Z平面距离越近,视觉效果更令人印象深刻(比如看电影,越 ...

  8. OpenCV备忘

    都是转来的内容的,算是整理一下 OpenCV备忘 深度和通道的理解 CV_8UC1 是指一个8位无符号整型单通道矩阵, CV_32FC2是指一个32位浮点型双通道矩阵 CV_8UC1 CV_8SC1 ...

  9. C#常用代码片段备忘

    以下是从visual studio中整理出来的常用代码片段,以作备忘 快捷键: eh 用途: 类中事件实现函数模板 private void MyMethod(object sender, Event ...

随机推荐

  1. 【poj2699】 The Maximum Number of Strong Kings

    http://poj.org/problem?id=2699 (题目链接) 题意 给出1张有向完全图.U->V表示U可以打败V并得一分.如果一个人的得分最高,或者他打败所有比自己得分高的人,那么 ...

  2. MAC上快速调出终端的设置(保持和Windows的操作一致)

    在Windows上可以这样操作[Win+R]键->输入[cmd/cmder]打开终端. 在MAC下需要做些设置:打开[系统偏好设置]->打开[键盘]->打开[快捷键]->找到[ ...

  3. linux时间时区设置

    用linux的时候大家可能会遇到时间不对,时区不对的情况.比如使用网上廉价的国外的linux的vps,时区是国外的.那么如何在不劳烦管理员的情况下自己动手呢?首先要了解硬件时钟与系统时钟,计算机上的B ...

  4. [NOIP2015] 提高组 洛谷P2680 运输计划

    题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...

  5. 良精南方cms /inc/Check_Sql.asp SQL Injection Based On Cookie

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link:2. 漏洞触发条件 0x1: POC usi ...

  6. GPU keylogger && GPU Based rootkit(Jellyfish rootkit)

    catalog . OpenCL . Linux DMA(Direct Memory Access) . GPU rootkit PoC by Team Jellyfish . GPU keylogg ...

  7. JavaScript 单线程相关

    众所周知,Javascript是单线程执行的,这也就是说:JavaScript在同一个时间上只能处理一件事.他不像C,Java等这些多线程的,可以开不同的线程去同时处理多件事情. 那么为什么别的语言都 ...

  8. 大一上学期C语言学习心得总结

    经过一个学期的C语言学习,大体算是在这个编程语言上入了门,能够通过一些代码解决特定的问题.当然,每次成功将问题转换成代码都小有激动,虽然只是在黑框上输出了一些数字或是字符串. 编程,虽然还不是很懂,但 ...

  9. VS2012使用NUGet自动下载(还原)项目中使用的包

    一: 当签出完整项目后,在解决方案名称上点右键,选择"启用NuGet程序包还原". 二: 出现询问,当然要点是,当完成后,会发现在解决方案中,多出".nuget" ...

  10. Linux运维工程师入门的10大实用工具

    说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具. 我就大概列出这几方面,这样入门就基本没问题了. 工具如下: 1.Linux系统基础 这个不用说了,是基础中的基础,连这 ...