You are here

把数据存储到数据库表中(1)

存储模块所用数据的最常用方式,就是为这个模块的数据创建一个单独的数据库表。这将使得该数据与drupal核心数据库表独立开来。当你决定为模块创建哪些字段时,你应该问问自己:需要存储什么数据呢?如果我要对这个表进行查询,那么我需要使用什么字段和索引?最后,还要考虑一下,我在将来对这个模块可能会作哪些扩展?

    我们需要存储的数据也就是:注释的文本,注释所用到的节点的数字ID,和编写注释的用户的用户ID。保存一个时间戳也会非常有用,这样我们可以根据时间戳,来显示一列最近更新的注释。最后,我们对这张表进行查询的主要问题是,“在节点上,该用户做了哪些注释?”我们将在uid和nid字段上创建一个联合索引,从而使我们最常用的查询跑得尽可能快。我们表的SQL语句如下所示:
CREATE TABLE annotate (
    uid int(10) NOT NULL,
    nid int(10) NOT NULL,
    note longtext NOT NULL,
    when int(11) NOT NULL default '0',
    PRIMARY KEY (uid, nid),
);
老葛的Drupal培训班 Think in Drupal

Drupal版本:

评论

CREATE TABLE annotate (
    uid int(10) NOT NULL,
    nid int(10) NOT NULL,
    note longtext NOT NULL,
    when int(11) NOT NULL default '0',
    PRIMARY KEY (uid, nid),
);

修改为

CREATE TABLE annotations (
  uid int(11) NOT NULL,
  nid int(11) NOT NULL,
  note longtext NOT NULL,
  created int(11) NOT NULL default 0,
  PRIMARY KEY (uid, nid)
)