很长一段时间,脑海里没有模型和控制器的区别,几乎把所有代码都敲在控制器里边了。

来自于ThinkPhp3.2.3手册模型定义

​​​​​​​模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表。​​

模型类的命名规则

最常用的一个数据表定义:就是你当前建立的模型名称并不是你所对应的表,这时候只需要使用一个数据表名称的属性tableName,这个属性定义不需要表前缀。

例如:

​​class CategoryModel extends Model {

​ protected $tableName = 'categories';

}

这时候CategoryModel所对应得数据表名不是​Category,而是categories。

如果你的表名是没有前缀的,那么你需要tablePrefix​这个属性来定义:

class CategoryModel extends Model {

protected $tablePrefix=‘’;

}

为什么一定要配置? 是因为,如果你配置这个属性的话,ThinkPhp会自动调取当前配置文件中的 DB_PREFIX

这时候你也许会发现,既然没有表前缀的都有属性,那么一些特别的表,前缀和普通表前缀不同,怎么办?

Thinkphp也想到了这个问题,所以就有了$trueTableName属性,注意:这个属性需要完整的表名定义。

class CategoryModel extends Model {

protected $trueTableName=‘cate_category’;

}

最后一个属性$dbname,是使用另一个数据库里的表。例如cate.cate.category​

class CategoryModel extends Model {

protected $trueTableName=‘cate_category’;

​   protected    $dbname='cate';

}

模型定义问题大致就这些了。​

Thinkphp模型问题(一)的更多相关文章

  1. 错误之thinkphp模型使用发生的错误

    刚接触thinkphp模型的创建,在创建model类时在这里边声明了类的对象.唉,这是不理解的错误啊.什么叫做实例化模型对象,在控制器里边使用才创建. 模型这里写各种用到的函数. 这里我也体会到了查询 ...

  2. thinkphp模型层Model、Logic、Service讲解

    thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56   编辑:一切随缘   文章来源:php教程网 已阅读:771 次       js特效 ...

  3. ThinkPHP 模型(Model)命名规范

    一个小问题搞了好久:如果数据库的表名中有下划线,那么在用thinkphp做自动完成时注意Model类的命名要变成驼峰法,文件名和类名都要变.( 另外注意:只有使用create方法创建数据时才能调用到自 ...

  4. thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法)

    thinkphp模型中的获取器和修改器(根据字段名自动调用模型中的方法) 一.总结 记得看下面 1.获取器的作用是在获取数据的字段值后自动进行处理 2.修改器的作用是可以在数据赋值的时候自动进行转换处 ...

  5. thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)

    thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件) 一.总结 1.通过模型事件(钩子函数),可以在插入更新删除等前后执行一些特定的功能 2.模型事件是写在模型里面的,控制器中 ...

  6. thinkPHP模型before_insert新增前 before_update更新前 before_write写入前 区别

    thinkPHP模型中有个save方法,可用于新增数据和修改数据,这里容易出现混淆. 经过调试: before_write,不管是插入新数据还是修改数据都会执行: before_insert,只有插入 ...

  7. ThinkPHP模型基础类提供的连贯操作方法

    ThinkPHP模型基础类提供的连贯操作方法(也有些框架称之为链式操作),可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 直线电机哪家好 使用也比较简单, 假如我们现在要查 ...

  8. thinkphp模型

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...

  9. TP框架---thinkphp模型

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...

随机推荐

  1. HDOJ Problem - 1299

    题意:等式 1 / x + 1 / y = 1 / n (x, y, n ∈ N+ (1) 且 x <= y) ,给出 n,求有多少满足该式子的解.(1 <= n <= 1e9) 题 ...

  2. 记一次使用jQuery清空元素

    缘由: 数据量比较大,分页显示,页码是自己写的,动态创建页码,创建元素时会绑定元素的click事件,每次显示五个页码(1,2,3,4,5),点击2—4不换,点5,页码变成3,4,5,6,7. 遇到的问 ...

  3. 许愿墙的搭建(基于Apache+php+mysql)

    一.准备部分:CentOS 7  , Linux 文本   各自配置好环境 二. CentOS 7准备如下: yum install httpd -y #安装httpd yum install php ...

  4. ListView 的使用

    一.ListView:不同视图中一种显示想的集合,显示表格样式的数据信息1.视图:            在其右上方小箭头点击将视图改为Details:或者右键属性在外观View将其改为Details ...

  5. C# List泛型集合中的GroupBy<>用法

    //根据子项目id得到flowjump实体类 flowJumps = this.FlowJumps; //按工序groupby flowjumps IEnumerable<IGrouping&l ...

  6. 关于rem的学习

    网页常见单位px.em.rem:其中rem是css3新出的单位,官网是这样定义的:“font size of the root element”,意思是:相对长度单位,相对于根元素(即html元素)f ...

  7. 微信支付之扫码支付开发:我遇到的坑及解决办法(附:Ecshop 微信支付插件)

    前段时间帮一个朋友的基于ecshop开发的商城加入微信扫描支付功能,本以为是很简单的事儿——下载官方sdk或开发帮助文档,按着里面的做就ok了,谁知折腾了两三天的时间才算搞定,中间也带着疑问在网上找了 ...

  8. linux桌面的安装

    在CentOS 7中提供了两种桌面"GNOME DESKTOP" 和 "KDE Plasa Workspaces",我们以安装"GNOME DESKT ...

  9. 401. Binary Watch

    [题目] Total Accepted: 10330 Total Submissions: 24061 Difficulty: Easy Contributors: Admin A binary wa ...

  10. WebPack 简明学习教程

    WebPack 简明学习教程 字数1291 阅读22812 评论11 喜欢35 WebPack是什么 一个打包工具 一个模块加载工具 各种资源都可以当成模块来处理 网站 http://webpack. ...