Wie lehre ich PhpStorm, die drupal {table} SQL-Syntax zu erkennen?

13

Ich habe es mit einem wirklich alten Drupal-Projekt zu tun, das voller SQL-Abfragen ist. PhpStorms Verständnis von SQL ist sehr praktisch, aber ich habe Probleme mit Drupalismus wie {table_name}. IDE beschwert sich darüber <reference> expected, got '{'.

Wie kann ich PhpStorm so einrichten, dass es versteht, dass die Zeichenfolge in geschweiften Klammern nur ein Tabellenname ist? Oder zumindest die geschweiften Klammern ignorieren lassen?

SiliconMind
quelle
1
Verwenden Sie die Drupal-Integration? Ich habe dieses Problem mit PHPStorm noch nie gesehen. Haben Sie ein spezielles Plugin für SQL, das möglicherweise Probleme verursacht?
googletorp
@googletorp ja ich benutze Drupal Support Plugin mit PhpStorm
SiliconMind
1
@ SiliconMind Das wird nicht unterstützt, denke ich. Sie können den SQL-Dialekt festlegen, aber Sie können diese spezielle Funktion nicht festlegen, möglicherweise weil andere Plugins Ihren Code ausführen und Ihnen Live-Ergebnisse liefern können (z. B. Datenbank-Tools und SQL). Ich habe das nie benutzt, aber ich bin mir nicht sicher, ob das eine gute Praxis ist.
Golddragon007

Antworten:

9

In den PhpStorm-Einstellungen> Extras> Datenbank> Benutzerparameter:

  • Aktivieren Sie "In String-Literalen mit SQL-Injection aktivieren".
  • In \{\w+\}zu Parametern Patterns.

Sie können auch die Zeile mit ändern %\w+, um für Sprache PHP für Platzhalter wie erlaubt zu sein %d. Siehe Screenshot und auch den PhpStorm-Blogbeitrag von JetBrain: Konfiguration der Datenbankspracheninjektion .

Screenshot der PhpStorm-Einstellungen

LarS
quelle
1
Ich würde zu wechseln \{\w+\}, \{(\w+)\}um besser mit der Abfrageausführung von PhpStorm zu arbeiten (die Tastenkombination Strg + Eingabetaste). Wenn Sie versuchen, die Abfrage ohne die zusätzlichen Klammern auszuführen, werden Sie aufgefordert, einen Parameter mit dem Namen # 1 für Ihre Eingabe einzugeben. {table_name}Mit den Klammern werden Sie jedoch hilfreicher aufgefordert, einen Parameter für table_name einzugeben .
morbiD
Nach meinem vorherigen Kommentar sind hier Beispiele für den Unterschied, den die Klammern machen würden. Wenn Sie für eine Abfragezeichenfolge von die SELECT * FROM {node} WHERE nid = :nidTastenkombination Strg + Eingabetaste drücken, werden die folgenden Eingabeaufforderungen angezeigt: mit Klammern und ohne Klammern .
morbiD
Dies löst nicht das Problem, bei dem die Tabellenspalten als ungelöst markiert sind. Benötigen Sie eine Lösung, die die Tabelle und ihre Spalten wie in der regulären SQL-Syntax erkennt.
Semra
-5

Ich kenne keine Möglichkeit, PHPStorm dazu zu bringen, die Drupal SQL-Syntax zu erkennen.

Wenn Sie jedoch nur eine von Drupal erstellte Abfrage debuggen möchten, können Sie die geschweiften Klammern aus der Abfrage entfernen, nachdem Sie sie in die PHPStorm-Abfragekonsole kopiert haben.

Eyal
quelle
1
Der Grund für die Ablehnung dieses Hinweises liegt darin, dass das Entfernen oder Vernachlässigen von Klammern um Tabellennamen das Tabellenpräfixverhalten von Drupal beeinträchtigt. Siehe diesen Link für Details über die Funktion: drupal.org/node/2622
Weston Wedding
@WestonWedding Ich habe nicht vorgeschlagen, die geschweiften Klammern zu entfernen, während eine Abfrage in Drupal ausgeführt wird. Mein Vorschlag war, die Klammern nach dem Kopieren der Abfrage von Drupal auf die PHPStorm-Abfragekonsole zu entfernen. Es ist ein bisschen manuelle Arbeit, hilft aber beim Debuggen von von Drupal erstellten Abfragen.
Eyal
Aha! Nun, das steht nirgendwo in Ihrer Antwort, daher könnten einige Leute verwirrt sein.
Weston Hochzeit
Ich habe die Antwort mit etwas mehr Kontext aktualisiert.
Eyal