zurmo(八)-数据库表分析及某些功能的页面实现

来源:互联网 发布:福建顶点软件 垃圾 编辑:程序博客网 时间:2024/06/05 06:35

1.zurmo的数据库比较特别 , 它是没有那些状态表的之类的小表的。有的只是主表和多对多的关系表。zurmo是通过以下的这些表来实现状态之类信息的存储的。

1.customfield    2.basecustomfield  3.customfielddata

如果只有一个model的一个状态的话,在主表的中加一个customfield_id也可以,如果要加入多个model的状态的话,就不需要加customfield_id了,但是需要额外的字段了。(xxxx_customfield_id,yyyy_customfield_id等等)

3个表的关系如图:
这里写图片描述

从图可以很明显的看到它们之间的关系。

在 customfielddata表中存的就是那些小表的具体信息。以序列化的形式存入.就是 serializeddata 字段的值。

1.首先在module的 xxxxDefaultDataMaker.php 文件中定义好。重写的make()方法里具体的实现就是设置 那些小表的具体信息。

已 AccountsDefaultDataMaker.php 为例:

这里写图片描述

数据库序列化值如下:a:9:{i:0;s:10:"Automotive";i:1;s:7:"Banking";i:2;s:17:"Business Services";i:3;s:6:"Energy";i:4;s:18:"Financial Services";i:5;s:9:"Insurance";i:6;s:13:"Manufacturing";i:7;s:6:"Retail";i:8;s:10:"Technology";}Array(    [0] => Automotive    [1] => Banking    [2] => Business Services    [3] => Energy    [4] => Financial Services    [5] => Insurance    [6] => Manufacturing    [7] => Retail    [8] => Technology)这是我自己打印出来的值。

2.步骤1完成之后,在model中的relations的配置。

'industry'=>array(static::HAS_ONE,'OwnedCustomField',static::OWNED, static::LINK_TYPE_SPECIFIC, 'industry'),

数组的第一个参数是 表之间的关系 ,’OwnedCustomField’表示的自定义的字段。第4个参数和第5个参数是一起的,第5个参数表示 account 表的一个字段的一部分 。有一个 industry_customfield_id 字段。至于为什么这样子命名以及第四个参数的意思,在zurmo的源码里注释有说。(PS:在class BeanModel里有说)

3.在customFields配置如下:

'customFields' => array('industry' => 'Industries','type'    => 'AccountTypes',),

4.在 xxxEditAndDetailsView 要加上对应的内容。

5.最后,不要忘记了在URL里加上 ?resolveCustomData=1 .执行这步之后数据库的customfielddata表里才有这个模块的这个数据,一开始是没有的。 (PS:如果自己在代码中加了一些新的值,一定要做这步,不然数据库是不会更新的,页面自然也不会显示了)

6.刷新页面,就可以发现所有的状态值都可以显示了。也可以正常的存到的数据库了。

0 0
原创粉丝点击