[转]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';
$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操作
操作(动态)配置: 主要用于Action方法里面
获取:
C('配置参数')
设置:
C('配置参数 ',新值) A操作
快速创建Action对象:
$action = A('User');
等效于
$action = new UserAction(); 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 //当前模版路径
__ROOT__ // 网站根目录地址
__APP__ // 当前项目(入口文件)地址
__URL__ // 当前模块地址
__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 // 表单值不为空则验证 I方法
echo I('get.id'); // 相当于 $_GET['id']
echo I('get.name'); // 相当于 $_GET['name']
echo I('get.name','','htmlspecialchars'); // 采用htmlspecialchars方法对$_GET['name'] 进行过滤,如果不存在则返回空字符串
[转]ThinkPHP的CURD易忽视点小结的更多相关文章
- ThinkPHP的易忽视点小结
1.使用对象的方法插入数据 D用法. $Form = D('Form'); $data['title'] = 'ThinkPHP'; $data['content'] = '表单内容'; $Form- ...
- ThinkPHP 的CURD 基本操作
说起CURD,懂点SQL的人都知道,就是增删改查,做业务系统的时候,往往离不开这CURD,最近也是刚刚接触ThinkPHP,ThinkPHP的灵活性是比原生PHP好用的多,下面我就简单的介绍一下我的学 ...
- ThinkPHP 的CURD
1.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User'); $m=M('User'); select $arr = $m->select() ...
- IIS易混概念小结
IIS连接数 常识: 虚拟主机会限制IIS连接数,关于其含义,差不多每个主机供应商都有一套自己的说法,微软也没有给出很明确的解释: 含义: IIS服务器可以同时容纳客户请求的最高连接数,准确的说应该叫 ...
- 【三十四】thinkphp之curd操作
1.数据创建(create) 接受提交过来的数据,比如表单提交的 POST(默认)数据.接受到数据后,还可以对数据进行有效的验证.完成.生成等工作 // 这里 create()方法就是数据创建,数据的 ...
- Thinkphp的CURD
CURD即(Create Update Read Delete)其实也就是等同于增删改查. C:Create 创建数据 对数据的添加 Create$m=new Model('User');$m=M( ...
- thinkphp的CURD操作
增 //a字段是主键 $data['b'] = 'bbb'; $data['c'] = 'c'; $new_id = M('test')->data($data)->add(); //ec ...
- java易混淆知识小结
1.java的基本数据类型,及所占字节和范围 byte: 字节型,占1个字节,8位,范围是 -2^7 ~ 2^7-1 short:短整型,占2个字节,16位,范围是 -2^15 ~ 2^15 ...
- 易忽视的Python知识点
1.sort和sorted (1)sort:会直接修改原始列表的序列,只是排序,不去重. >>> a=[2,5,7,8,3,5,1,3,9,6,2] >>> a.s ...
随机推荐
- thinkphp中order方法
order方法属于模型的连贯操作方法之一,用于对操作的结果排序. 用法 $Model->where('status=1')->order('id desc')->limit(5)-& ...
- javascript模拟flash头像裁切上传
是的,jq已经有类似的插件了,或者干脆用flash算了,为什么我还要自己写?因为造(wo)轮(bu)子(hui)也(flash)是一个学习的过程,轮子不会造,将来怎么造飞机?先来一张最终效果图: 一. ...
- 十个问题带你了解和掌握java HashMap
十个问题带你了解和掌握java HashMap 一.前言 本篇内容是源于 " 由阿里巴巴Java开发规约HashMap条目引发的故事",并在此基础上加了自己的对HashMap更多的 ...
- IdentityServer4系列之中文文档及实际项目经验分享
0.前言 原文:http://docs.identityserver.io/en/release/声明: 1.目录一至五章节根据IdentityServer英文文档翻译而来,有些内容会根据自己的理解来 ...
- Luogu2482 [SDOI2010]猪国杀 ---- 模拟
Luogu2482 [SDOI2010]猪国杀 题意 ...... https://www.luogu.org/problemnew/show/P2482 总结 首先说一下代码的构思: 首先确定了所有 ...
- EditText 数字范围 检查string 是不是数字
public static boolean isNumeric00(String str){ try{ Integer.parseInt(str); return true; }catch(Numbe ...
- JDK 动态代理的简单理解
动态代理 代理模式是 Java 中的常用设计模式,代理类通过调用被代理类的相关方法,提供预处理.过滤.事后处理等服务,动态代理及通过反射机制动态实现代理机制.JDK 中的 java.lang.refl ...
- Spring_Spring@Transactional
Spring事务的传播行为 在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例 ...
- FireDAC 下的 Sqlite [8] - 自定义函数
Sqlite 本身没有这个功能, FireDAC 通过 TFDSQLiteFunction 增加了该功能; 尽管通过某些 SQL 语句或通过视图也可以达到类似效果, 但函数会更灵活些. 本例先建了一个 ...
- DMA Stream/Channel Outputting via GPIOC[0..7]
Ok, so quickly mashing up another example using a different TIM, DMA Stream/Channel for illustration ...