Thinkphp模型问题(一)

Posted on 2016-11-25 17:17  AntionZhou  阅读(176)  评论(0编辑  收藏  举报

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

来自于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';

}

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