Bagaimana cara mengajar PhpStorm untuk mengenali sintaks SQL drupal {table}?

14

Saya berurusan dengan beberapa proyek drupal yang sangat tua yang penuh dengan query SQL. Pemahaman PhpStorm tentang SQL sangat berguna namun saya memiliki masalah dengan drupalisme seperti {table_name}. IDE mengeluhkan hal itu <reference> expected, got '{'.

Bagaimana saya bisa mengatur PhpStorm sehingga akan mengerti bahwa string di dalam kurung kurawal hanya nama tabel? Atau setidaknya membuatnya mengabaikan kawat gigi keriting?

SiliconMind
sumber
1
Apakah Anda menggunakan integrasi Drupal? Saya belum pernah melihat masalah ini dengan PHPStorm. Apakah Anda memiliki plugin khusus untuk SQL yang mungkin menyebabkan masalah?
googletorp
@googletorp ya saya menggunakan plugin dukungan drupal yang dibundel dengan PhpStorm
SiliconMind
1
@ SiliconMind Itu tidak didukung, saya pikir. Anda dapat mengatur dialek sql, tetapi Anda tidak dapat mengatur hal khusus ini, mungkin karena plugin lain dapat menjalankan kode Anda dan memberi Anda hasil secara langsung (seperti Database Tools dan SQL) ... mungkin. Saya tidak pernah menggunakan itu, tapi saya tidak yakin itu praktik yang baik.
golddragon007

Jawaban:

10

Dalam PhpStorm Preferences> Tools> Database> Parameter Pengguna:

  • Centang "Aktifkan string literal dengan injeksi SQL"
  • Tambahkan \{\w+\}ke Pola Parameter.

Anda mungkin juga ingin memodifikasi baris dengan %\w+diizinkan untuk bahasa php untuk placeholder suka %d. Lihat tangkapan layar dan juga posting blog Jetprain PhpStorm: Konfigurasi Basis Data Bahasa .

Tangkapan layar preferensi PhpStorm

LarS
sumber
1
Saya akan berubah \{\w+\}untuk \{(\w+)\}bekerja lebih baik dengan eksekusi query PhpStorm (Ctrl + Enter shortcut). Tanpa tanda kurung tambahan, jika Anda mencoba mengeksekusi kueri, ia akan meminta Anda untuk memasukkan parameter yang disebut # 1 untuk Anda {table_name}, tetapi dengan tanda kurung itu akan lebih membantu meminta Anda untuk parameter table_name .
morbiD
Lebih jauh dari komentar saya sebelumnya, berikut adalah contoh perbedaan yang dibuat oleh tanda kurung. Untuk string kueri SELECT * FROM {node} WHERE nid = :nid, menekan pintasan Ctrl + Enter menampilkan perintah berikut: dengan tanda kurung dan tanpa tanda kurung .
morbiD
1
Ini tidak menyelesaikan masalah di mana kolom tabel ditandai sebagai belum terselesaikan. Perlu solusi yang mengenali tabel dan kolomnya, seperti dalam sintaks sql biasa.
Semra
-5

Saya tidak tahu cara apa pun untuk membuat PHPStorm mengenali sintaks Drupal SQL.

Tetapi jika Anda hanya ingin men-debug kueri yang dibuat oleh Drupal, maka Anda dapat menghapus kurung kurawal dari kueri setelah menyalinnya ke konsol kueri PHPStorm.

Eyal
sumber
1
Alasan untuk downvotes saran ini adalah karena menghapus atau mengabaikan memasukkan tanda kurung di sekitar nama tabel akan mengganggu perilaku awalan meja Drupal. Lihat tautan ini untuk perincian tentang fitur: drupal.org/node/2622
Pernikahan Weston
@WestonWedding Saya tidak menyarankan menghapus kurung keriting saat menjalankan kueri di Drupal. Saran saya adalah menghapus tanda kurung setelah menyalin kueri dari Drupal ke konsol kueri PHPStorm. Ini sedikit kerja manual, tetapi membantu ketika men-debug permintaan yang dibuat oleh Drupal.
Eyal
Saya melihat! Ya, itu tidak ada dalam jawaban Anda di mana pun, sehingga beberapa orang mungkin menjadi bingung.
Pernikahan Weston
Saya memperbarui jawabannya dengan sedikit lebih banyak konteks.
Eyal