app.brand
nav.index
nav.about
user.sign.in
ThinkPHP视图模型同一张表多次关联表别名问题
ThinkPHP模型视图使用很便捷,但是这次开发游戏公会系统却遇到了一个问题,一个公用道具隶属于一个公会,而借用道具的角色也有自己隶属的公会,但可能并不是同一个公会。因此在做视图模型的时候,需要两次左外联公会表。问题由此产生,虽然我用了`_as`这个别名参数,但是无论如何操作,都只显示后面那个公会表。百度找不到相关材料,因此自己尝试修复,过程如下: 首先就是确认`_as`的效果,通过输出sql语句发现是起效果的,的确在语句中显示了别名,但此时仍只能显示后一个公会表。 思考是否是我模型顺序问题?尝试修改左外联表的顺序,结果直接报错说找不到某个条件,百度后发现也有同样问题,好像是个BUG? 弄到凌晨2点,因为还在做单位里疾控工作,这几天一直熬夜太累了实在难受,躺床上继续想…突然想到是否列别名也要都不一样?尝试无果… 第二天起来记得好像以前解决过,查之前代码和笔记无果…简化视图模型,尝试加法,从零开始拼视图,然后发现自己做的数据里缺少了角色的ID信息,马上加上去,结果还是不行,BUG依旧(看来真的可能是BUG?) 再次阅读官方文档,官档有提到`_table`这个参数,思考了下,感觉每次第一个公会表都被忽略,是否是ThinkPHP的方法里重复表名会过滤?修改表名为自定义表名,然后用`_table`参数来指定实际表,果然就可以了,也不用再使用`_as`这个参数,我真的是… ```php array( 'PCH_Id', '_type' => 'LEFT' ), 'guildt' => array( 'G_Id', '_on' => 'piecehistoryt.G_Id = guildt.G_Id', '_type' => 'LEFT' ), 'rolet' => array( 'R_Id', '_on' => 'piecehistoryt.R_Id = rolet.R_Id', '_type' => 'LEFT' ), 'roleguildt' => array( '_table'=> 'guildt', 'G_Id' => 'RG_Id', '_on' => 'rolet.G_Id = roleguildt.G_Id' ) ); } ``` 我TM真聪明…
data.update.last
sys.time.ago
punc.commaarticle.create.bypunc.commaarticle.file.inpunc.colon
ThinkPHP
©app.copyright.year
app.author
·
app.ICP
sys.donate
alipay._self
wechat._self