启用软删除的模型中,使用alias指定别名后,软删除字段的别名无效,仍然为表全名,导至查询时出现无法查找到字段的错误。
BUG分析:
模型软删除取软删除字段时,加上'__TABLE__'做别名替换,如下图:
SoftDelete.php

而在Query.php中,alias指定别名时,将'__TABLE__'替换成了表名,这时$this->options['alias']['表名']=别名,也就是说$this->options['alias']数组里是没有$this->options['alias']['__TABLE__']的,如下图:

但是在最后的parseKey字段和表名处理时,软删除之前的字段别名一直没有变化还是字符'__TABLE__',这时又重新取表全名替换'__TABLE__',所以最终,软删除字段的别名为表全名,而非之前用alias指定的别名,如下图:

临时简要解决:
在Query.php第1520行
$this->options['alias'][$table] = $alias;下增加一行$this->options['alias']['__TABLE__'] = $alias;,目的是为了能让parseKey方法查询到'__TABLE__'的别名,如图:
最佳答案