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?


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


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.