codecamp

数据表特殊字段

在 ModPHP 中,模块就是数据表,每一张数据表都对应一个同名模块。

ModPHP 为模块数据表预留了一些用来存储特殊数据并借以实现特殊操作的字段,它们是:

  • {module}_id 默认主键字段
  • {module}_time 时间戳字段
  • {module}_link 自定义链接字段
  • {module}_parent 父记录字段
  • {ex-table}_id 外键字段
  • user_protect 用户私密字段

{module}_id 默认主键字段:

ModPHP 使用主键 id 作为查询数据库记录的默认方式,这个 ID 是自增的,不能由用户提交和修改,系统在插入或者更新数据库记录时,会自动将主键字段过滤。

{module}_time 时间戳字段:

如果某个模块的数据需要记录时间,可以添加这个字段到数据表中(并更新数据库结构),系统会自动在添加数据库记录时自动将这个字段填充为一个 UNIX 时间戳,在获取记录时,你可以使用 date() 函数将其转换为格式化的时间。

{module}_link 自定义链接字段:

如果某个模块需要为记录添加自定义的 URL 地址时,可以为模块数据表添加这个字段。系统在解析 URL 链接时,当遇到这个设置的链接,会自动调用相应的模板来展示其内容。

需要注意的是,自定义链接无论在写入时是否为完整 URL 地址,在写入数据库时都将转换成相对路径,而在获取时转换成绝对路径。

{module}_parent 父记录字段:

模块的父记录和子记录描述的是同一数据表下的两条记录的从属关系,比如一个分类目录下面可能有好几个所属的分类目录,自己也可以从属于另一个分类目录。再比如评论,可能一条评论是评论原文的,而另一条评论则用来回复这条评论,它们之间都构成从属关系。模块的父子记录关系是相对的,一条记录可以是这条记录的父记录,也可以是那条记录的子记录;但一条记录可以有多个子记录,却只能有一条父记录。

{ex-table}_id 外键字段:

模块的主从表记录描述的是不同数据库下的两条记录的从属关系,比如一篇文章由一个用户创建,文章记录是主表记录,而用户记录则是从表记录,在 post 表中有一个 user_id 字段(外键)指向 user 表并为 user 表的主键,ModPHP 在获取主表记录时,也会同时获取从表记录。主从表关系是交叉相对的,一个主表可以有多个从表,一个从表也可以被多个主表链接。但是,当一个从表被多个主表链接时,请将这个外键置于数据表数组靠后的位置,因为后面的表的数据总是覆盖前面的表的同名数据。

特殊的外键包括:

user_id 用户 ID 外键,如果模块中包含这个外键,系统会在插入数据库记录时自动填充当前登录用户的 ID,并且在进行模块操作时会自动检查用户是否登录。

user_protect 用户私密字段:

ModPHP 允许用户对自己的信息进行自定义的私密性设置,将要保密的字段填写在 user_protect 内,系统会在获取用户信息时自动将其过滤。除非获取的是当前用户信息,或者当前用户为管理员,否则其他用户都无权查看这些自定义的私密信息。

自动关联与生成
认识 CMS
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

挂钩机制

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }