Como ensinar o PhpStorm a reconhecer a sintaxe drupal {table} SQL?

14

Estou lidando com um projeto drupal realmente antigo, cheio de consultas SQL. A compreensão do PhpStorm sobre SQL é muito útil, no entanto, tenho problemas com o drupalismo {table_name}. O IDE reclama disso <reference> expected, got '{'.

Como posso configurar o PhpStorm para que ele entenda que a cadeia de caracteres entre chaves é apenas um nome de tabela? Ou pelo menos fazê-lo ignorar as chaves?

SiliconMind
fonte
1
Você está usando a integração Drupal? Eu nunca vi esse problema com o PHPStorm. Você tem um plug-in especial para o SQL que pode estar causando problemas?
googletorp
@googletorp sim Estou usando o plug-in de suporte drupal empacotado com o PhpStorm
SiliconMind 29/10
1
@ SiliconMind Isso não é suportado, eu acho. Você pode definir o dialeto sql, mas não pode definir essa coisa específica, talvez porque outros plugins possam executar seu código e fornecer resultados ao vivo (como Database Tools e SQL) ... talvez. Eu nunca usei isso, mas não tenho certeza de que seja uma boa prática.
golddragon007

Respostas:

10

Em Preferências do PhpStorm> Ferramentas> Banco de Dados> Parâmetros do usuário:

  • Marque "Ativar literais de seqüência de caracteres com injeção SQL"
  • Adicionar \{\w+\}aos padrões de parâmetro.

Você também pode modificar a linha %\w+para permitir php de idioma para espaços reservados como %d. Veja a captura de tela e também a postagem no blog PhpStorm do JetBrain: Configuração de injeção de idioma do banco de dados .

Screenshot de preferências do PhpStorm

LarS
fonte
1
Eu mudaria \{\w+\}para \{(\w+)\}trabalhar melhor com a execução da consulta do PhpStorm (o atalho Ctrl + Enter). Sem os parênteses extras, se você tentar executar a consulta, ele solicitará que você insira um parâmetro chamado # 1 para o seu {table_name}, mas, com os parênteses, será mais útil solicitar o parâmetro table_name .
mórbida
Além do meu comentário anterior, aqui estão exemplos da diferença que os parênteses fariam. Para uma sequência de consultas de SELECT * FROM {node} WHERE nid = :nid, pressionar o atalho Ctrl + Enter exibe os seguintes prompts: com parênteses e sem parênteses .
mórbida
1
Isso não resolve o problema em que as colunas da tabela estão marcadas como não resolvidas. Precisa de uma solução que reconheça a tabela e suas colunas, como na sintaxe sql regular.
Semra
-5

Não conheço nenhuma maneira de fazer o PHPStorm reconhecer a sintaxe Drupal SQL.

Mas se você quiser depurar uma consulta criada pelo Drupal, poderá remover os chavetas da consulta depois de copiá-la para o console de consulta PHPStorm.

Eyal
fonte
1
O motivo dos votos negativos deste conselho é porque a remoção ou negligência de incluir colchetes em torno dos nomes das tabelas interferirá no comportamento de prefixo da tabela do Drupal. Consulte este link para obter detalhes sobre o recurso: drupal.org/node/2622
Weston Wedding
@WestonWedding Eu não sugeri remover os colchetes enquanto executava uma consulta no Drupal. Minha sugestão foi remover os colchetes depois de copiar a consulta do Drupal para o console de consulta PHPStorm. É um pouco de trabalho manual, mas ajuda na depuração de consultas criadas pelo Drupal.
Eyal
Eu vejo! Bem, isso não está na sua resposta em nenhum lugar, então algumas pessoas podem estar ficando confusas.
Wedding Weston
Atualizei a resposta com um pouco mais de contexto.
Eyal