¿Cómo enseñar a PhpStorm a reconocer la sintaxis SQL de drupal {table}?


14

Estoy lidiando con un proyecto drupal muy antiguo lleno de consultas SQL. La comprensión de PhpStorm de SQL es muy útil, sin embargo, tengo problemas con el drupalismo {table_name}. IDE se queja de eso <reference> expected, got '{'.

¿Cómo puedo configurar PhpStorm para que comprenda que la cadena dentro de las llaves es solo un nombre de tabla? ¿O al menos hacer que ignore las llaves?


1
¿Estás utilizando la integración de Drupal? Nunca he visto este problema con PHPStorm. ¿Tiene un complemento especial para SQL que podría estar causando problemas?
googletorp

@googletorp sí, estoy usando el complemento de soporte de drupal incluido con PhpStorm
SiliconMind

1
@SiliconMind Eso no es compatible, creo. Puede configurar el dialecto sql, pero no puede configurar esta cosa específica, tal vez porque otros complementos pueden ejecutar su código y darle resultados en vivo (como Herramientas de base de datos y SQL) ... tal vez. Nunca usé eso, pero no estoy seguro de que sea una buena práctica.
golddragon007

Respuestas:


10

En Preferencias de PhpStorm> Herramientas> Base de datos> Parámetros de usuario:

  • Marque "Habilitar en literales de cadena con inyección SQL"
  • Agregar \{\w+\}a los patrones de parámetros.

Es posible que también desee modificar la línea %\w+para permitir php de idioma para marcadores de posición como %d. Vea la captura de pantalla y también la publicación del blog PhpStorm de JetBrain: Configuración de inyección de idioma en la base de datos .

Captura de pantalla de preferencias de PhpStorm


1
Me gustaría cambiar \{\w+\}para \{(\w+)\}trabajar mejor con la ejecución de consultas de PhpStorm (el atajo Ctrl + Enter). Sin los paréntesis adicionales, si intenta ejecutar la consulta, le pedirá que ingrese un parámetro llamado # 1 para su {table_name}, pero con los paréntesis le solicitará un parámetro nombre_tabla más útil .
morbiD

Además de mi comentario anterior, aquí hay ejemplos de la diferencia que harían los paréntesis. Para una cadena de consulta de SELECT * FROM {node} WHERE nid = :nid, al presionar el atajo Ctrl + Enter se muestran las siguientes indicaciones: con paréntesis y sin paréntesis .
morbiD

1
Esto no resuelve el problema donde las columnas de la tabla están marcadas como no resueltas. Necesita una solución que reconozca la tabla y sus columnas, como en la sintaxis sql regular.
Semra


-5

No conozco ninguna forma de hacer que PHPStorm reconozca la sintaxis de Drupal SQL.

Pero si solo desea depurar una consulta creada por Drupal, puede eliminar las llaves de la consulta después de copiarla en la consola de consulta PHPStorm.


1
La razón de los votos negativos de este consejo es porque eliminar o descuidar incluir corchetes alrededor de los nombres de las tablas interferirá con el comportamiento de prefijos de tablas de Drupal. Vea este enlace para obtener detalles sobre la función: drupal.org/node/2622
Weston Wedding

@WestonWedding No sugerí eliminar los corchetes mientras ejecutaba una consulta en Drupal. Mi sugerencia fue eliminar los corchetes después de copiar la consulta de Drupal a la consola de consulta PHPStorm. Es un poco de trabajo manual, pero ayuda al depurar consultas creadas por Drupal.
Eyal

¡Veo! Bueno, eso no está en su respuesta en ninguna parte, por lo que algunas personas pueden estar confundidas.
Boda Weston

Actualicé la respuesta con un poco más de contexto.
Eyal
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.