ThinkPHP的易忽视点小结

1、使用对象的方法插入数据 D用法。

$Form = D(‘Form‘);
$data[‘title‘] = ‘ThinkPHP‘;
$data[‘content‘] = ‘表单内容‘;
$Form->add($data);

其实thinkphp还支持对象的方式直接向数据库插入数据,如下:

$Form = D(‘Form‘);
$Form->title = ‘ThinkPHP‘;
$Form->content = ‘表单内容‘;
$Form->add();

2、不指定条件对数据更新。

$Form = M("Form"); // 要修改的数据对象属性赋值
$data[‘id‘] = 5;
$data[‘title‘] = ‘ThinkPHP‘;
$data[‘content‘] = ‘ThinkPHP3.1版本发布‘;
$Form->save($data); // 根据条件保存修改的数据

save方法会自动识别数据对象中的主键字段,并作为更新条件。当然,你也可以显式的传入更新条件,也就是我们最常用的方法:

$Form = M("Form");
// 要修改的数据对象属性赋值
$data[‘title‘] = ‘ThinkPHP‘;
$data[‘content‘] = ‘ThinkPHP3.1版本发布‘;
$Form->where(‘id=5‘)->save($data); // 根据条件保存修改的数据

其实还有对象的方式,就像上面提到的,插入数据,用对象的方式一样:

$Form = M("Form");
// 要修改的数据对象属性赋值
$Form->title = ‘thinkphp‘;
$Form->content = ‘ThinkPHP3.1版本发布‘;
$Form->where(‘id=5‘)->save(); // 根据条件保存修改的数据

并且,可以将主键字段包含在要保存的数据里,这样就可以不需要写where了

$Form = M("Form");
// 要修改的数据对象属性赋值
$Form->id = 5;
$Form->title = ‘thinkphp‘;
$Form->content = ‘ThinkPHP3.1版本发布‘;
$Form->save(); // 根据数据对象中的主键保存修改的数据

3、单个字段值的修改。

有些时候,我们只需要修改某个字段的值,就可以使用setField方法,而不需要每次都调用save方法。

$Form = M("Form"); // 更改title值
$Form->where(‘id=5‘)->setField(‘title‘,‘ThinkPHP‘);

6、强大的增减字段值运算。

thinkphp中,可以对某个字段的数据直接执行增减操作。

对于统计字段,系统还提供了更加方便的setInc和setDec方法。

$User = M("User"); // 实例化User对象
$User->where(‘id=5‘)->setInc(‘score‘,3); // 用户的积分加3
$User->where(‘id=5‘)->setInc(‘score‘); // 用户的积分加1
$User->where(‘id=5‘)->setDec(‘score‘,5); // 用户的积分减5
$User->where(‘id=5‘)->setDec(‘score‘); // 用户的积分减1

7、不使用where来执行删除。

$User->delete(‘1,2,5‘); // 删除主键为1,2和5的用户数据。

这种用法可以用在类似于签到时候,用户积分自动增加的例子上。

8、打印sql语句

echo $User->getLastSql();或者echo $User->_sql();

循环输出

volist 还有别名 iterate

模版赋值:

$User = D(‘User‘)
$list = $User->findAll()
$this->assign(‘list‘,$list)

模版定义:

<iterate name="list" id="vo">
{$vo.name}
</iterate>

注意 name 和 id 表示的含义

// 输出 list 的第 5~15 条记录
<iterate name="list" id="vo" offset="5" length=‘10‘>
{$vo.name}
</iterate>
// 输出偶数记录
<iterate name="list" id="vo" mod="2" >
<eq name="mod" value="1">
{$vo.name}
</eq>
</iterate>
// 输出 key
<iterate name="list" id="vo" key="k" >
{$k}.{$vo.name}
</iterate>
//子循环输出
<volist name="list" id="vo">
<iterate name="vo[‘sub‘]" id="sub">
{$sub.name}
</iterate>
</volist>

Switch 标签

<switch name="name">
<case value="1">value1</case>
<case value="2">value2</case>
<default />default
</switch>

其 中 name 属性可以使用函数以及系统变量,例如:

<switch name="Think.get.userId|abs">
<case value="1">admin</case>
<default />default
</switch>

也 可以对 case 的 value 属性使用变量,例如:

<switch name="userId">
<case value="$adminId">admin</case>
<case value="$memberId">member</case>
<default />default
</switch>

比较标签

<eq name="name" value="value">value</eq> // name 变量的值等于 value 就输出
<neq name="name" value="value">value</neq> // name 变量的值不等于 value 就输出
<gt name="name" value="5">value</gt> // name 变量的值大于 5 就输出
<egt name="name" value="5">value</egt> // name 变量的值大于等于 5 就输出
<lt name="name" value="5">value</lt> // name 变量的值小于 5 就输出
<elt name="name" value="5">value</elt> // name 变量的值小于等于 5 就输出
//其实上面的所有标签都是 compare 标签的别名
// 其中 type 属性的值就是上面列出的判断标签名称
<compare name="name" value="5" type="eq">value</compare> // name 变量的值等于 5 就输出

If标签

<if condition="$name eq 1 "> value1
<elseif condition="$name eq 2" />value2
<else /> value3
</if>

C操作

操作(动态)配置: 

获取:

C(‘配置参数‘)

设置:

C(‘配置参数 ‘,新值)

D操作

快速创建模型数据对象:

$model = D(‘User‘);

等效于

$model = new UserModel();

S操作

快速操作缓存方法

获取:

S(‘name‘)

设置:

S(‘name‘,‘value‘);

删 除:

S(‘name‘,NULL);

F操作

快速文件数据保存方法

使用方法与S操作一样

L操作

快速操作语言变量

获取:

L(‘语言变量‘);

设置:

L(‘语言变量‘,‘值‘);

如: L(‘USER_INFO‘,‘用户信息‘); //设置名称为USER_INFO的语言变量

批量赋值:

$arr[‘语言变量1‘] = ‘值1‘;

$arr[‘语言变量2‘] = ‘值2‘;

L($arr);

ThinkPHP系统常量

THINK_PATH // ThinkPHP 系统目录

APP_PATH // 当前项目目录

APP_NAME // 当前项目名称

MODULE_NAME //当前模块名称

ACTION_NAME // 当前操作名称

TMPL_PATH // 项目模版目录

LIB_PATH // 项目类库目录

CACHE_PATH // 项目模版缓存目录

CONFIG_PATH //项目配置文件目录

LOG_PATH // 项目日志文件目录

LANG_PATH // 项目语言文件目录

TEMP_PATH //项目临时文件目录

PLUGIN_PATH // 项目插件文件目录

VENDOR_PATH // 第三方类库目录

DATA_PATH // 项目数据文件目录

IS_APACHE // 是否属于 Apache

IS_IIS //是否属于 IIS

IS_WIN //是否属于Windows 环境

IS_LINUX //是否属于 Linux 环境

IS_FREEBSD //是否属于 FreeBsd 环境

NOW_TIME // 当前时间戳

MEMORY_LIMIT_ON // 是否有内存使用限制

MEMORY_LIMIT_ON // 是否有内存使用限制

OUTPUT_GZIP_ON // 是否开启输出压缩

MAGIC_QUOTES_GPC // MAGIC_QUOTES_GPC

THINK_VERSION //ThinkPHP 版本号

LANG_SET // 浏览器语言

TEMPLATE_NAME //当前模版名称

TEMPLATE_PATH //当前模版路径

// 网站根目录地址

__APP__ // 当前项目(入口文件)地址

/index/article // 当前模块地址

__ACTION__ // 当前操作地址

__SELF__ // 当前 URL 地址

TMPL_FILE_NAME //当前操作的默认模版名(含路径)

WEB_PUBLIC_URL //网站公共目录

APP_PUBLIC_URL //项目公共模版目录

预定义常量

WEB_LOG_ERROR=0 // 错误日志类型

WEB_LOG_DEBUG=1 // 调试日志类型

SQL_LOG_DEBUG=2 // SQL 日志类型

SYSTEM_LOG=0 // 系统方式记录日志

MAIL_LOG=1 // 邮件方式记录日志

TCP_LOG=2 // TCP 方式记录日志

FILE_LOG=3 // 文件方式记录日志

DATA_TYPE_OBJ=1 // 对象方式返回

DATA_TYPE_ARRAY=0 // 数组方式返回

URL_COMMON=0 // 普通模式 URL

URL_PATHINFO=1 // PATHINFO URL

URL_REWRITE=2 // REWRITE URL

HAS_ONE=1 // HAS_ONE 关联定义

BELONGS_TO=2 // BELONGS_TO 关联定义

HAS_MANY=3 // HAS_MANY 关联定义

MANY_TO_MANY=4 // MANY_TO_MANY 关联定义

EXISTS_VAILIDATE = 0 // 表单存在字段则验证

MUST_VALIDATE = 1 // 必须验证

VALUE_VAILIDATE = 2 // 表单值不为空则验证
时间: 2024-10-12 20:12:24

ThinkPHP的易忽视点小结的相关文章

[转]ThinkPHP的CURD易忽视点小结

转自: http://www.oschina.net/code/snippet_2285640_44437. 1.使用对象的方法插入数据 D用法. $Form = D('Form'); $data['title'] = 'ThinkPHP'; $data['content'] = '表单内容'; $Form->add($data); 其实thinkphp还支持对象的方式直接向数据库插入数据,如下: $Form = D('Form'); $Form->title = 'ThinkPHP'; $F

ThinkPHP中的快捷函数小结

U() 制作url地址的快捷函数 C(名称) 获得配置变量(convertion.php config.php)信息C(名称,值) 设置配置变量信息 L() 获得语言变量信息E() 给页面输出错误信息 A("项目://模块/控制器") 实例化控制器对象A("Home/User") 实例化User控制器对象A("book://Home/User") 实例化book项目的Home模块的User控制器对象 R([模块/]控制器标志/操作方法)  实例化

OpenCV里IplImage和char *的相互转换,以及极易忽视的细节

OpenCV中IplImage和单字节char*的相互转换 从 IplImage到 char* : data = image->imageData //对齐的图像数据 或者data = image->imageDataOrigin //未对齐的原始图像数据 从 char* 到 IplImage: image =cvCreateImageHeader(cvSize(width,height), depth, channels); cvSetData(image, data, step); ste

集合一些易忽视的地方

1.请讲下Java里面的容器 集合Collection有两种: List:元素是有序的,元素可以重复,因为该集合体有索引 ArrayList: 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高.    当元素放满了后,以原长度的50%+1的长度加长集合容器的长度. Vector: 底层数据结构是数组,查询快,增删慢. 线程安全,效率低.    当元素放满了后,以原长度100%的长度加长集合容器的长度. LinkedList: 底层数据结构是链表,查询慢,增删快. 线程不安全,效率高. V

总结ThinkPHP使用技巧经验分享(四)

ThinkPHP的CURD易忽视点小结1.不定义方法,直接渲染模板. 对于没有任何实际逻辑的操作方法,我们只需要直接定义对应的模板文件就行了,比如表单页面,这个页面一般不会有变量向模板中输出,所以,我们没有必要再去写一个对应的空方法然后$this->display()了.2.简介create方法. 假设我们实例化的模型为$model,那么ThinkPHP可以直接通过$model->add()的方式向数据库中添加数据,那么如果我们在$model->add()之前调用$model->c

身体乳选哪个品牌好?国珍竹珍身体乳,呵护肌肤滑爽滋润每一天!

很多人会忽然发现自己的头发枯黄.身体越来越干.手部越来越粗糙.唇部开始皲裂.通常对于脸上多一条细纹或多一个斑点,我们总是斤斤计较,小心谨 慎,却常常忽略自己的头发.身体,以及唇部.手部等细节部位的护理.所以,我们对每寸肌肤.每个细节都要重视起来,及时给肌肤加点"油",才能全方位解决肌肤干燥.瘙痒问题,让您在整个秋季水当当.润滋滋. 易忽视的部位--身体 被衣物遮盖的身体肌肤虽然面积比脸部肌肤多20倍以上,却经常被我们忽略,很多时候等到全身起皮.瘙痒时,才会注意到它.去除过厚的老化角质.

国珍竹珍沁泽润体乳给肌肤加点“油”国珍吕飞强烈推荐!

身体肌肤的护理--国·珍沁泽润体乳 国·珍沁泽润体乳含天然松花粉精华和生物保湿因子:性质温和,给肌肤充分滋养的同时锁住水分,所含有效成分能够渗透至肌肤深层,长时间保持滑爽滋润:沐浴后,取适量本品,轻柔涂抹于全身,适当按摩效果更加:温和特性适合各种肤质,干燥性皮肤可适当增加用量.富含有花粉精华.生物保湿因子. 含天然竹提取物和生物保湿成分.质地柔和,在给肌肤充分滋养的同时锁住水分,防止肌肤干痒.所含成分能够渗透至肌肤深层,长时间保持肌肤滑爽滋润.尤其适合沐浴后全身使用. 如何正确使用国·珍沁泽润体

机电传动控制学习笔记3

首先写写本周的仿真作业.仿真结果:启动后约在3.9至4.2秒转速会达到稳定,稳定值在1213r/min左右(不能达到1220r/min,因为一直会有0.6欧姆的内阻存在),而上升曲线只有些许波澜. 仿真要求:电机启动仿真要求结合要本周学习的直流电机机械特性,用Modelica设计和仿真一个直流电机串电阻启动过程,电机工作在额定电压和额定磁通下,采用串三段或四段电阻启动,整个启动过程电枢电流中不能超过额定电流的3倍.额定电压240V,额定电流16.2A,额转矩29.2N.m,额定转速1220 r/

namp强大

自学nmap笔记,有兴趣学习的可以看下 -T4 野蛮扫描:网络较好情况. -A 综合扫描 -sS 隐蔽扫描 -sU UDP扫描 -v 详细输出 -p 指定端口,如21,443,也可以1-65535 Ping就是主机发现,现在部分禁止了所以ping功能,所以扫描会出现,未ping 所以就停止端口扫描,但是no ping 扫描就是直接端口扫吧. no ping -Pn 单独的主机发现就是 -sn(注意在nmap 原版里,-sP 而不是-sn ) 输出结果是 up down failed failed