相关文章推荐
性感的香蕉  ·  ASP.NET Core 全球化和本地化| ...·  6 天前    · 
忐忑的啄木鸟  ·  国企招聘_政府(国有)企业招聘信息-高校人才 ...·  1 周前    · 
任性的火车  ·  大葱的营养价值虽高,但这3类人不宜吃葱!看完 ...·  8 月前    · 
一直单身的抽屉  ·  葡萄牙创南非世界杯进球纪录朝鲜吃了文明的亏— ...·  10 月前    · 
另类的冲锋衣  ·  实力歌手演唱动漫主题曲,张韶涵的《破茧》超动 ...·  1 年前    · 
小百科  ›  TP入门第六天-腾讯云开发者社区-腾讯云
发财的蜡烛
1 年前
苦咖啡

TP入门第六天

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
苦咖啡
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > TP入门第六天

TP入门第六天

作者头像
苦咖啡
发布 于 2018-05-07 17:40:30
740 0
发布 于 2018-05-07 17:40:30
举报
文章被收录于专栏: 我的博客 我的博客

1、模型

模型类一般位于项目的Lib/Model目录下面,当我们创建一个UserModel类的时候,其实已经遵循了系统的约定。模型类的命名规则是除去表前缀的数据表名称,采用驼峰法命名,并且首字母大写,然后加上模型类的后缀定义Model

模型名(类名)

约定对应数据表(假设数据库的前缀定义是 think_)

UserModel

think_user

UserTypeModel

think_user_type

如果你的数据表和这个不一样,可以使用以下属性进行调正

tableName

不包含表前缀的数据表名称,一般情况下默认和模型名称相同,只有当你的表名和当前的模型类的名称不同的时候才需要定义。

trueTableName

包含前缀的数据表名称,也就是数据库中的实际表名,该名称无需设置,只有当上面的规则都不适用的情况或者特殊情况下才需要设置。

dbName

定义模型当前对应的数据库名称,只有当你当前的模型类对应的数据库名称和配置文件不同的时候才需要定义。

贴出来官方手册中的例子

下面举个例子来加深理解,例如,在数据库里面有一个think_categories表,而我们定义的模型类名称是CategoryModel,按照系统的约定,这个模型的名称是Category,对应的数据表名称应该是think_category(全部小写),但是现在的数据表名称是think_categories,因此我们就需要设置tableName属性来改变默认的规则(假设我们已经在配置文件里面定义了DB_PREFIX为 think_)。

protected $tableName = ‘categories’;

注意这个属性的定义不需要加表的前缀think_

而对于另外一种特殊情况,数据库中有一个表(top_depts)的前缀和其它表前缀不同,不是think_而是 top_,这个时候我们就需要定义 trueTableName属性了

protected $trueTableName = ‘top_depts’;

注意trueTableName需要完整的表名定义

除了数据表的定义外,还可以对数据库进行定义,例如:

protected $dbName = ‘top’;

2、实例化模型

首先说明一下有四种实例化方法

第一种:实例化基础模型类

用法:$user=new Model(‘user’);//或者使用$user=M(‘user’);//这里声明下user的首字母可以大写也可以小写

用途:支持跨项目调用,完成基本的增删查改(CURD)操作

第二种:实例化公共模型类

用法:$user=new CommonModel(‘User’);这里说明下这个CommonModel.class. php 是在/APP_PATH/lib/Model目录下建立的,比如user表(省去了前缀)和column表中都需要这样一个简单的方法public function GG(){echo “ Joyous 学习TP3.0″;}当然一般不会这么简单的逻辑(我这里只是让大家容易理解,如果没有理解话也不要担心~)

第三种:实例化自定义模型类

用法:这种情况是使用的最多的,一个项目不可避免的需要定义自身的业务逻辑实现,就需要针对每个数据表定义一个模型类,这个时候需要在项目的lib/model目录下,比如UserModel.class. php 。这个时候你可以使用$user=new UserModel();//注意这里没有表名了!!或者使用$user=D(‘User’);//后面会讲解D快捷方法

第四种:实例化空模型(一般情况下这种就够用了)

上面说的方法都是集成了sql执行,可是我想自己写一个sql语句怎么执行呢?也就原生SQL怎么办?这就用到了空模型了

$model=new Model();//或者使用M快捷方法

$model->query(“原生sql语句“);

3、M方法和D方法详解

M方法默认是实例化Model类,第二个参数用于指定表前缀,第三个参数就可以指定其他的数据库连接信息。

D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。

附:这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会自动调用M方法。效率上就不用我做说明了吧?

4、字段缓存

字段缓存保存在Runtime/Data/_fields/目录下面,缓存机制是每个模型对应一个字段缓存文件(而并非每个数据表对应一个字段缓存文件),命名格式是:数据库名.模型名.php字段缓存包括数据表的字段信息、主键字段和是否自动增长,如果开启字段类型验证的话还包括字段类型信息等等,无论是用M方法还是D方法,或者用原生的实例化模型类一般情况下只要是不开启调试模式都会生成字段缓存(字段缓存可以单独设置关闭)。

配置中:’DB_FIELDS_CACHE’=>false

就是设置不缓存字段信息。

如果你想提高性能,你可以在自定义模型类中添加$fields属性(具体内容参考官方手册)

附:有很多人问到,为何他们的字段不会生成或者就是数据库写入读取失败了?

再次强调:如果是调试模式是不会生成缓存字段的,还有就是如果你项目中已经升程了~app.php和~runtime.php文件,你删除了这两个文件重新运行试试!第二个问题也有可能是更改了字段信息而缓存中的信息没有删除~~~

5、读取配置信息

我们一直在说配置信息config.php,可是我们能获取到里面的信息吗?当然可以!你可以直接用echo C(‘URL_MODEL’);即可当然你可以使用C方法进行配置赋值

本文参与 腾讯云自媒体分享计划 ,分享自作者个人站点/博客。
原始发表:2012年8月5日, 如有侵权请联系 cloudcommunity@tencent.com 删除
数据库
php
sql

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

数据库
php
sql
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
推荐阅读
LV.
文章
0
获赞
0
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
产品介绍
开年上云有礼
领券
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2024 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
性感的香蕉  ·  ASP.NET Core 全球化和本地化| Microsoft Learn
6 天前
忐忑的啄木鸟  ·  国企招聘_政府(国有)企业招聘信息-高校人才网|高才网
1 周前
任性的火车  ·  大葱的营养价值虽高,但这3类人不宜吃葱!看完记得提醒身边的人 ...
8 月前
一直单身的抽屉  ·  葡萄牙创南非世界杯进球纪录朝鲜吃了文明的亏——中新网
10 月前
另类的冲锋衣  ·  实力歌手演唱动漫主题曲,张韶涵的《破茧》超动听,信开口既王者_ ...
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号