公式 - 关联列
上一讲,我们看到了如何定义页面数据,以及使用页面数据,但都是集中在查找的数据表本身的字段,如果要使用数据表关联的其他数据表的字段,怎么办呢?
1.页面数据关联列
在MisShop中,我们可以用很简单的方式实现关联列的查询或者使用。
例如 ds
是客户数据集,ds.联系人
是客户的联系人(用户的引用)。
那么我们看看关联列怎么用。
-
ds.联系人.手机号
: 客户联系人的手机号。 -
ds.联系人.角色
: 客户联系人的角色。 -
ds.联系人.部门
:客户联系人所在的部门 (这里是部门id,但可能显示为部门名称) -
ds.联系人.部门.名称
:客户联系人所在的部门的名称。 -
ds.联系人.部门.主管
:客户联系人所在的部门的主管(主管id)。 -
ds.联系人.部门.主管.名称
:客户联系人所在的部门的主管。 -
ds.联系人.部门.主管.收hi好
:客户联系人所在的部门的主管的手机号。
数据关联列显示效果
2.数据表关联列
查询的时候也是类似,需要把 ds.xx 改为 table.客户.xx , 就不再表示页面数据的关联列,而是数据表的关联列
-
table.客户.联系人.手机号
:客户表中联系人的手机号 -
table.客户.联系人.部门.名称
:客户表中联系人的部门的名称。 -
table.客户.联系人.部门.主管
:客户表中联系人的部门的主管。
我们看看下面这些公式:
-
table.客户.find(table.客户.联系人.手机号=="15010002000")
:查找联系人手机号是15010002000的客户。 -
table.客户.find(table.客户.联系人.部门==me.部门)
:查找联系人和当前用户相同部门的客户。 -
table.客户.find(table.客户.联系人.部门.主管==me.id)
:查找当前用户负责的部门的客户。 -
table.客户.find(table.客户.联系人.部门.主管==me.id || table.客户.联系人==me.id)
:查找当前用户负责的部门的客户,以及当前用户的客户。
3.查询关联列
在客户列表页中,查询区域里类似=query.ds.xx
的格子表示查询项。当点击 查询 按钮后,会根据查询项的内容进行查询。
例如
-
query.ds.名称
:输入文本,查找名称包含输入文本的客户 。 -
query.ds.名称.eq
:输入文本,按照名称完全相等查询 -
query.ds.性别
:选择一个性别,查找性别为选中项的客户。 -
query.ds.联系人
:选择一个用户,查找联系人是该用户的客户。 -
query.ds.生日
:选择一个日期,查找生日在该天的客户。 -
query.ds.生日.大于等于
选择一个日期,查找生日大于等于该天的客户 -
query.ds.生日.小于
选择一个日期,查找生日小于该天的客户
也可以使用关联列
-
query.ds.联系人.名称
按照名称查询,查找联系人名称包含输入文本的客户。 -
query.ds.联系人.名称.eq
: 按照名称查询,查找联系人名称和输入文本完全相同的客户。 - ```query.ds.联系人.部门`` : 选择一个部门,查找联系人的部门为选择的部门的客户。
- ```query.ds.联系人.部门.名称`` : 输入部门名称,查找联系人的部门名称包含输入文本的客户。
- ```query.ds.联系人.部门.主管`` : 选择一个用户,查找联系人的部门主管是选中用户的客户。
关联列查询示例
4.一对多关联
例如客户有 引用 用户 的 联系人 字段。
部门表有字段主管,引用到用户。也就是通过 主管 字段,部门表到用户表有一个多对一关联。
多对一关联,可以直接用小圆点在后面接上来,反过来多对一关联怎么表示呢?
例如我们在客户表中,希望看到 客户的联系人管理的所有部门的id的列表。
我们可以在.后面输入OM,然后就能看到该表的一对多的所有关联。
-
```=ds.联系人.OM_主管^部门```` :部门id 的列表 [1,2]
-
=ds.联系人.OM_主管^部门.名称
:部门名称的列表 [业务部,财务部] -
=ds.联系人.OM_主管^部门.上级部门.名称
:上级部门名称的列表 [业务部,业务部]