站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
ThinkPHP开发指南-模型之连贯操作
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
高级
特殊字符
帮助
标题
2级
3级
4级
5级
格式
插入
拉丁字母
扩展拉丁字母
国际音标
符号
希腊字母
希腊字母扩展
西里尔字母
阿拉伯字母
扩展阿拉伯字母
希伯来字母
孟加拉语字符集
泰米尔数字和符号
泰卢固语字符集
僧伽罗语字符集
梵文字符集
古吉拉特语字符集
泰语字符集
老挝语
高棉语字母
加拿大原住民音节文字
卢恩
Á
á
À
à
Â
â
Ä
ä
Ã
ã
Ǎ
ǎ
Ā
ā
Ă
ă
Ą
ą
Å
å
Ć
ć
Ĉ
ĉ
Ç
ç
Č
č
Ċ
ċ
Đ
đ
Ď
ď
É
é
È
è
Ê
ê
Ë
ë
Ě
ě
Ē
ē
Ĕ
ĕ
Ė
ė
Ę
ę
Ĝ
ĝ
Ģ
ģ
Ğ
ğ
Ġ
ġ
Ĥ
ĥ
Ħ
ħ
Í
í
Ì
ì
Î
î
Ï
ï
Ĩ
ĩ
Ǐ
ǐ
Ī
ī
Ĭ
ĭ
İ
ı
Į
į
Ĵ
ĵ
Ķ
ķ
Ĺ
ĺ
Ļ
ļ
Ľ
ľ
Ł
ł
Ń
ń
Ñ
ñ
Ņ
ņ
Ň
ň
Ó
ó
Ò
ò
Ô
ô
Ö
ö
Õ
õ
Ǒ
ǒ
Ō
ō
Ŏ
ŏ
Ǫ
ǫ
Ő
ő
Ŕ
ŕ
Ŗ
ŗ
Ř
ř
Ś
ś
Ŝ
ŝ
Ş
ş
Š
š
Ș
ș
Ț
ț
Ť
ť
Ú
ú
Ù
ù
Û
û
Ü
ü
Ũ
ũ
Ů
ů
Ǔ
ǔ
Ū
ū
ǖ
ǘ
ǚ
ǜ
Ŭ
ŭ
Ų
ų
Ű
ű
Ŵ
ŵ
Ý
ý
Ŷ
ŷ
Ÿ
ÿ
Ȳ
ȳ
Ź
ź
Ž
ž
Ż
ż
Æ
æ
Ǣ
ǣ
Ø
ø
Œ
œ
ß
Ð
ð
Þ
þ
Ə
ə
格式
链接
标题
列表
文件
参考
讨论
说明
输入内容
输出结果
斜体
''斜体文字''
斜体文字
粗体
'''粗体文字'''
粗体文字
粗斜体
'''''粗斜体文字'''''
粗斜体文字
<span style="border:1px solid #000; float:right; text-align:center; padding:6px;"><strong>导航:</strong>[[ThinkPHP开发指南-模型|上一页]]</span> <div style="clear:both;"></div> [[ThinkPHP]]2.0版本全面启用模型类的连贯操作方法,可以有效的提高数据存取的代码清晰度和开发效率。使用方面也比较简单, 假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下: '''PHP代码''' <pre> $User->where('status=1')->order('create_time')->limit(10)->select(); </pre> 除了select方法必须放到最后一个外,其他的连贯操作的方法调用顺序没有先后,例如,下面的代码和上面的等效: '''PHP代码''' <pre> $User->order('create_time')->where('status=1')->limit(10)->select(); </pre> 如果不习惯使用连贯操作的话,新版还支持直接使用参数进行查询的方式。例如上面的代码可以改写为: '''PHP代码''' <pre> $User->select(array('order'=>'create_time', 'where'=>'status=1', 'limit'=>'10')); </pre> 使用数组参数方式的话,索引的名称就是连贯操作的方法名称。其实不仅仅是查询方法可以使用连贯操作,包括add、 save、delete等方法都可以使用,例如: '''PHP代码''' <pre> $User->where('id=1')->field('id,name,email')->find(); $User->where('status=1 and id=1')->delete(); </pre> 原则上说,所有的连贯操作都只有一个参数,并且连贯操作的参数仅在当此查询或者操作有效,完成后会自动清空连贯操作的所有传值,简而言之,连贯操作的结果不会带入以后的查询。下面总结下连贯操作的使用方法(更多的用法我们会在CURD操作的过程中详细描述): '''Where方法''':用于查询或者更新条件的定义. Where方法的参数支持字符串、数组和对象。详细的使用请参考后面的查询语言部分。 '''Table方法''':定义要操作的数据表名称 可以动态改变当前操作的数据表名称,需要写数据表的全名,包含前缀,可以使用别名,例如: '''PHP代码''' <pre> $Model->Table('think_user user')->where('status>1')->select(); </pre> Table方法的参数支持字符串和数组,数组方式的用法: '''PHP代码''' <pre> $Model->Table(array('think_user'=>'user','think_group'=>'group'))->where('status>1')->select(); </pre> 使用数组方式定义的优势是可以避免因为表名和关键字冲突而出错的情况。如果不定义table方法,默认会自动获取当前模型对应或者定义的数据表。 '''Data方法''':数据对象赋值 可以用于新增或者保存数据之前的数据对象赋值,例如: '''PHP代码''' <pre> $Model->data($data)->add(); $Model->data($data)->where('id=3')->save(); </pre> '''Data方法'''的参数支持'''对象'''和'''数组''',如果是对象会自动转换成数组。如果不定义data方法赋值,也可以使用create方法或者手动给数据对象赋值的方式。 '''Field方法''':定义要查询的字段 Field方法的参数支持字符串和数组,例如, '''PHP代码''' <pre> $Model->field('id,nickname as name')->select(); $Model->field(array('id','nickname'=>'name'))->select(); </pre> 如果不使用field方法指定字段的话,默认和使用field('*')等效。 '''Order方法''':结果排序 . 例如: '''PHP代码''' <pre> order('id desc') </pre> 排序方法支持对多个字段的排序 '''PHP代码''' <pre> order('status desc,id asc') </pre> order方法的参数支持字符串和数组,数组的用法如下: '''PHP代码''' <pre> order(array('status'=>'desc','id')) </pre> '''Limit方法''':结果限制 我们知道不同的数据库类型的limit用法是不尽相同的,但是在ThinkPHP的用法里面始终是统一的方法,也就是limit('offset,length') ,无论是[[Mysql]]、[[SqlServer]]还是[[Oracle]][[数据库]],都是这样使用,系统的数据库驱动类会负责解决这个差异化。 '''例如''': '''PHP代码''' <pre> limit('1,10') </pre> 如果使用limit('10') 等效于 limit('0,10') '''Page方法''':查询分页 Page操作方法是新增的特性,可以更加快速的进行分页查询。Page方法的用法和limit方法类似,格式为: '''PHP代码''' <pre> Page('page[,listRows]') </pre> Page表示当前的页数,listRows表示每页显示的记录数。例如:Page('2,10') 表示每页显示10条记录的情况下面,获取第2页的数据。listRow如果不写的话,会读取limit('length') 的值,例如: '''PHP代码''' <pre>limit(25)->page(3); </pre> 表示每页显示25条记录的情况下面,获取第3页的数据。如果limit也没有设置的话,则默认为每页显示20条记录。 '''Group方法''':查询Group支持 例如:group('user_id') Group方法的参数只支持字符串 '''Having方法''':查询Having支持 例如: '''PHP代码''' <pre> having('user_id>0' </pre> having方法的参数只支持字符串 '''Join方法''':查询Join支持 Join方法的参数支持字符串和数组,并且join方法是连贯操作中唯一可以多次调用的方法。例如: '''PHP代码''' <pre> $Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select(); </pre> 默认采用LEFT JOIN 方式,如果需要用其他的JOIN方式,可以改成 '''PHP代码''' <pre> $Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select(); </pre> 如果join方法的参数用数组的话,只能使用一次join方法,并且不能和字符串方式混合使用. '''PHP代码''' <pre> join(array(' work ON artist.id = work.artist_id','card ON artist.card_id = card.id')) </pre> '''Distinct方法''':查询的Disiinct支持 查询数据的时候进行唯一过滤 '''PHP代码''' <pre> $Model->Distinct(true)->select(); </pre> '''Relation方法''':关联查询支持 关联查询方法的详细用法请参考后面的关联模型部分。 '''Lock方法''':查询锁定 Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用: '''PHP代码''' <pre> ck(true) </pre> 就会自动在生成的[[SQL]]语句最后加上 FOR UPDATE。 [[category:ThinkPHP]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)