POSCMS分享经验 版主:论坛审计组
摆脱必须主表才能在list里循环的join方法
类型:POSCMS 更新时间:2020-07-18 05:08:38

老样子,唠叨一下。

前阵子做网站,因为和客户沟通不清晰。 不知道有些字段需要列表中显示。所以设计的存储在附表。数据已经填充大半,要在list里循环的话必须主表。删除字段,重建有太麻烦。今日得空,翻看了下首页和官方的模版解析文件。发现 其实官方早已经洞悉一切,为我们预留好了解决方法。 

image.png

看手册,有join 和 on 这两个参数,熟悉php的人 肯定知道 这个是数据查询中关联表的参数。 首先了解官方的数据表设计,如news模块  自定义字段的时候 设置主表的话 也就是添加至  dr_news 表中 这样就可以在list里面循环出来, 默认的是添加至附表。毕竟字段都放在主表的话 是很操蛋的一件事。(我就是没注意到这么多 全部加到附表去了)

{list action=module catid=$catid join=1_news_data_0 on=id,id order=updatetime page=1}
标题:{$t.title}
地址:{$t.url}
内容:{$t.content}   //content就是主表中的字段 不用join的话 是不能在list中循环出来的 加入了join就可以了
{/list}
{$sql}//感兴趣的可以打印下sql 就知道其中的奥妙了

join就是 你要关联的表名称  on字段呢 也就是他们要管理的字段  如上面的list  两个表中的id是相同的 所以就填 id,id

当然 这个join不指查询附表的,更是可以任意表的

回帖
  • 李小维
    #1楼    李小维
    2017-10-16 15:35:48
    0
    这个方法只能用于5万条以内的数据,超过了5万条数据就会自动分表,1_news_data_1,1_news_data_2,1_news_data_N,那么用你这个方法就不管用了
  • 九天网络(JiuDay)
    #2楼    九天网络(JiuDay)
    2017-10-16 15:44:04
    0
    【李小维】1楼是的,分表了 数据表表名都不一样了 join查询自然会失效。但是如果你把字段都添加进主表的话 5万条数据 也够呛吧
  • 独舞
    #3楼    独舞
    2020-07-18 05:08:38
    Chrome 0
    同样头疼