Comment apprendre à PhpStorm à reconnaître la syntaxe drupal {table} SQL?

14

J'ai affaire à un très vieux projet drupal plein de requêtes SQL. La compréhension de PhpStorm de SQL est très pratique mais j'ai des problèmes avec le drupalisme comme {table_name}. IDE s'en plaint <reference> expected, got '{'.

Comment puis-je configurer PhpStorm pour qu'il comprenne que la chaîne à l'intérieur des accolades n'est qu'un nom de table? Ou au moins faire ignorer les accolades?

SiliconMind
la source
1
Utilisez-vous l'intégration Drupal? Je n'ai jamais vu ce problème avec PHPStorm. Avez-vous un plugin spécial pour le SQL qui pourrait causer des problèmes?
googletorp
@googletorp oui j'utilise un plugin de support drupal fourni avec PhpStorm
SiliconMind
1
@SiliconMind Ce n'est pas pris en charge, je pense. Vous pouvez définir le dialecte sql, mais vous ne pouvez pas définir cette chose spécifique, peut-être parce que d'autres plugins peuvent exécuter votre code et vous donner des résultats en direct (comme les outils de base de données et SQL) ... peut-être. Je n'ai jamais utilisé cela, mais je ne suis pas sûr que ce soit une bonne pratique.
golddragon007

Réponses:

10

Dans Préférences PhpStorm> Outils> Base de données> Paramètres utilisateur:

  • Cochez "Activer dans les littéraux de chaîne avec injection SQL"
  • Ajouter \{\w+\}aux modèles de paramètres.

Vous pouvez également modifier la ligne avec %\w+pour être autorisé pour le langage php pour les espaces réservés comme %d. Voir la capture d'écran et également le billet de blog PhpStorm de JetBrain: Configuration de l'injection du langage de base de données .

Capture d'écran des préférences de PhpStorm

LarS
la source
1
Je changerais \{\w+\}pour \{(\w+)\}mieux fonctionner avec l'exécution de la requête de PhpStorm (le raccourci Ctrl + Entrée). Sans les parenthèses supplémentaires, si vous essayez d'exécuter la requête, il vous invitera à entrer un paramètre appelé # 1 pour votre {table_name}, mais avec les parenthèses, il vous sera plus utile de demander un paramètre table_name .
morbiD
Suite à mon commentaire précédent, voici des exemples de la différence que les parenthèses feraient. Pour une chaîne de requête de SELECT * FROM {node} WHERE nid = :nid, appuyer sur le raccourci Ctrl + Entrée affiche les invites suivantes: avec parenthèses et sans parenthèses .
morbiD
1
Cela ne résout pas le problème où les colonnes du tableau sont marquées comme non résolues. Besoin d'une solution qui reconnaît la table et ses colonnes, comme dans la syntaxe sql standard.
Semra
-5

Je ne connais aucun moyen de faire reconnaître à PHPStorm la syntaxe Drupal SQL.

Mais si vous souhaitez simplement déboguer une requête créée par Drupal, vous pouvez supprimer les accolades de la requête après l'avoir copiée dans la console de requête PHPStorm.

Eyal
la source
1
La raison des downvotes de ce conseil est que la suppression ou la négligence d'inclure des crochets autour des noms de table interfère avec le comportement de préfixation de table de Drupal. Voir ce lien pour plus de détails sur la fonctionnalité: drupal.org/node/2622
Weston Wedding
@WestonWedding Je n'ai pas suggéré de supprimer les accolades lors de l'exécution d'une requête dans Drupal. Ma suggestion était de supprimer les crochets après avoir copié la requête de Drupal vers la console de requête PHPStorm. C'est un peu de travail manuel, mais aide lors du débogage des requêtes créées par Drupal.
Eyal
Je vois! Eh bien, cela ne se trouve nulle part dans votre réponse, donc certaines personnes pourraient être confuses.
Mariage Weston
J'ai mis à jour la réponse avec un peu plus de contexte.
Eyal