使用很长一段时间的Thinkphp5.0,一直被一个问题困扰,就是模型里面数据查询无法使用别名,除非使用DB类
但是模型里面一般是直接使用
$this 或 静态方法 self
例如写一个 Join 查询
当前表取别名为t,查看当前Sql
可以看到别名没有起作用,经过我再三翻找源码,定位的位置是
\thinkphp\library\think\db\Query.php
尝试过,Db::name 与 self 都是这个分支
而 self 的表名是未转化的,转化一下就行,添加代码
if (false !== strpos($table, '__')) {
$table = $this->parseSqlTable($table);
}
添加完成后截图
解决完成
来源:oschina
链接:https://my.oschina.net/u/2966154/blog/1926295