Ben*_*wis 11 sql oracle phpstorm
我一周左右才使用PhpStorm,到目前为止,我所有的SQL查询都在设置数据库连接后没有错误地工作正常.这个当前代码实际上使用了第二个数据库(一个用于特定产品的另一个用户),所以我在数据库选项卡中添加了该连接,但它仍然给我一个"无法解析列"警告.
有没有办法看到它在看什么数据库?它适用于多个数据库吗?或者我做错了什么?
错误如下:
$this->db->setSQL("SELECT T1.*, trunc(sysdate) - trunc(DATE_CHANGED) EXPIRES FROM " . $this->tableName . " T1 WHERE lower(" . $this->primaryKey . ")=lower(:id)")
Run Code Online (Sandbox Code Playgroud)
这也是我的数据库设置窗口看起来像看到一些人有参数模式问题导致此错误,但我很确定这不是问题:
使用PhpStorm 10.0.3
Pau*_*aul 10
您可以在中设置SQL解析范围File -> Settings -> Languages & Frameworks -> SQL Resolution Scopes.
这允许您为整个项目提供默认值,您可以选择定义项目中某些路径的特定映射.
所以简短的回答是它不能将表名称作为变量读取,即使它在上面的变量中设置.我认为PhpStorm可以解决这个问题.删除错误的唯一方法是完全关闭SQL检查(显然不是我在整个项目中使用它的理想选择)或仅使用doc注释临时禁用此语句:
/** @noinspection SqlResolve */
Run Code Online (Sandbox Code Playgroud)
希望找到一个更有针对性的评论,就像@var或@method一样,以帮助告诉Phpstorm表应该是什么,所以它仍然可以检查声明的其余部分.类似的事情:
/** @var $this->tableName TABLE_IM_USING */
也许将来JetBrains会添加它或使PhpStorm足够聪明地查看上面的变量3行.