如何教PhpStorm识别drupal {table} SQL语法?


14

我正在处理一些充满SQL查询的真正古老的drupal项目。PhpStorm对SQL的理解非常方便,但是我对诸如drupalism有一些疑问{table_name}。IDE抱怨说<reference> expected, got '{'

如何设置PhpStorm,以便它可以理解花括号内的字符串只是一个表名?或者至少使它忽略花括号?


1
您正在使用Drupal集成吗?我从未见过PHPStorm出现此问题。您是否有可能会引起问题的SQL专用插件?
googletorp

@googletorp是,我正在使用与PhpStorm捆绑在一起的drupal支持插件
SiliconMind 16-10-29

1
@SiliconMind,我认为不支持。您可以设置sql方言,但不能设置此特定的东西,也许是因为其他插件可以运行您的代码并实时提供结果(例如数据库工具和SQL)...。我从未使用过,但是我不确定这是一个好习惯。
golddragon007

Answers:


10

在PhpStorm首选项>工具>数据库>用户参数中:

  • 选中“使用SQL注入在字符串文字中启用”
  • 添加\{\w+\}到参数模式。

您可能还想修改该行%\w+以允许php等占位符使用语言php %d。请参阅屏幕截图,以及JetBrain的PhpStorm博客文章:数据库语言注入配置

PhpStorm首选项截图


1
我会改变\{\w+\}\{(\w+)\}与PhpStorm的查询执行效果更好(按Ctrl + Enter键快捷方式)。如果没有额外的括号,如果你试图执行查询时,它会提示你输入参数调用#1你的{table_name},但括号它会更有益的提示您的table_name的参数。
morbiD

除了我之前的评论,以下是括号将产生区别的示例。对于查询字符串SELECT * FROM {node} WHERE nid = :nid,按Ctrl + Enter快捷键将显示以下提示:带括号不带括号
morbiD

1
这不能解决将表列标记为未解决的问题。需要一种可以识别表及其列的解决方案,就像常规sql语法一样。
塞姆拉


-5

我不知道有什么方法可以使PHPStorm识别Drupal SQL语法。

但是,如果您只想调试Drupal创建的查询,则可以在将查询复制到PHPStorm查询控制台后从查询中删除花括号。


1
该建议之所以遭到否决,是因为删除或忽略在表名前后加上方括号会干扰Drupal的表前缀行为。有关此功能的详细信息,请参见此
Weston Wedding

@WestonWedding我不建议在Drupal中执行查询时删除花括号。我的建议是在将查询从Drupal复制到PHPStorm查询控制台后,删除括号。这是一些手工工作,但在调试Drupal创建的查询时会有所帮助。
Eyal

我知道了!好吧,那不是您的答案,因此某些人可能会感到困惑。
韦斯顿婚礼

我用更多的上下文更新了答案。
Eyal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.