ABC三张表,fastadmin提供的自动生成工具,只支持A-B A-C模式,不支持A-B-C 模式,不多啰嗦解决的过程,只说结果:
1、用自动生成工具,先把大概的架子弄出来。然后基于此进行更改。
2、找到需要修改的控制器对应php。注意里面有一段:
对于选择了关联模型的情况,index已经被复制并修改了,而edit是后续需要用到的。也可以拷贝出来。
3、index的具体修改方法
有三段需要修改的内容。
第一段,total不需要关联太多,用A-B即可。C是不需要的。
第二段,核心,完全按图片里的示例改。mode什么的,都用不到,需要用Db::name(‘staff’) 作为A表,再分别join BC表。field表示需要的字段,名称不能有重复,要注意用别名。
第三段,删除原来的foreach。这里不多解释,自己可以看看如果不删,会怎么样。
修改完毕后,发现报错,找不到db。 需要在php文件开头,加:
至此,查询功能已经没问题。 但是发现,编辑不行。报 未发现数据。
4、调整edit
edit,其实改法和index差不多。list的查询,改为row的单行查询。注意最后面是 find,而不是select。
5、写在最后。
其实这个事情做了两次,花了很久。 第一次,index改的基本没问题,但是没有现在做的简单,也完全不理解原理,这次基本吃透了,遇到其他问题也会更容易解决。 第二次,就是昨天晚上发现edit不行,一直到今天10点才研究清楚,花了大概4个小时。
想对年轻人说,解决不了,是因为不够努力。
我不是个专职程序员,10年前是VB程序员,后来一直做项目管理。php、js、html,都没有系统性学习过和使用过。但是我够努力,解决不了,我会一直研究下去。
--------------华丽分割线-----------------------------------------------------
写完上面的文章之后,发现两个问题:
1、edit其实不用改。之前的错误,是因为index里面缺少了对删除数据的过滤条件,所以总是报查不到数据,是真的查不到。
2、调整了之后,发现查询有问题,无法查B、C表的字段,系统无法认,当名称都是name的时候,用了别名,就无法处理了。
3、突然想到视图。以前也用过视图,就是把ABC都弄到一个view里,但是遇到了各种问题后,调整了一个系统参数,会导致金额字段,只显示到元。 只能放弃视图。
今天尝试了一下,把BC组成视图后,没有遇到任何问题,顺利完成。