在前面两章我们讲解了一对多关系的处理。在RDS系统中是支持两种方式处理关联的

  1. Thinkphp关联查询
  2. 原生SQL查询

我们前面的处理方式就是第一种Thinkphp关联查询。其实针对多表或者多个子查询的复杂视图,我们是可以使用原生SQL来解决问题的。 我们以商品和分类模型为例,演示通过SQL实现的功能菜单。

# 基本字段

商品表的基本字段:

img.png

分类表的基本字段:

img.png

# 创建关联字段和虚拟字段

因为分类和商品之间的关系是一对多的关系,我们需要:

  1. 在商品表中创建“分类(cate_id)”字段来存储分类信息。因为目的是存储,所以需要创建字段。
  2. 在商品表中创建“分类(cate_name)”字段来展示分类名称信息。因为目的是展示,所以不需要创建字段,我们一般称之为虚拟字段。

说明:在前面的Thinkphp关联查询时,分类字段名和原表中的名字一致,这是因为系统可以自动处理别名问题。这里,分类字段设置为cate_name是必须的,因为原生SQL查询必须自己处理别名问题。 创建category_name字段时,设置为不创建字段,且无需选择所属表。

img.png

如下图所示,name行创建字段为否,是否录入为否:

img.png

# 数据列表设置

如下图所示,原生SQL查询,实现展示数据列表

img.png

# 最终业务界面

img.png

# 注意事项

如果是在数据列表中采用了原生SQL的方式实现数据列表,则需要注意,如果还存在详情方法,即上图所示的”查看详情“,则也需要在这个方法上做与数据列表相同的设置:配置SQL查询。