2016-04-22 7 views
2

Ich habe PhpStorm nur eine Woche oder so verwendet, bis jetzt alle meine SQL-Abfragen gut funktionierten, ohne Fehler nach dem Einrichten der Datenbankverbindung. Dieser aktuelle Code verwendet tatsächlich eine zweite Datenbank (die eine ist für die Benutzer die andere für das spezifische Produkt), also habe ich diese Verbindung auch in der Datenbank-Registerkarte hinzugefügt, aber es gibt immer noch eine 'nicht auflösbare Spalte' Warnung.PHPStorm kann Spalte für mehrere Datenbankverbindungen nicht auflösen

Gibt es eine Möglichkeit zu sehen, welche Datenbank sie betrachtet? Funktioniert es mit mehreren Datenbanken? Oder habe ich etwas anderes falsch gemacht?

Fehler unten:

error message

$this->db->setSQL("SELECT T1.*, trunc(sysdate) - trunc(DATE_CHANGED) EXPIRES FROM " . $this->tableName . " T1 WHERE lower(" . $this->primaryKey . ")=lower(:id)") 

Auch hier ist das, was Fenster meiner Datenbank Einstellungen aussieht wie einige Leute gesehen, Probleme mit dem Parameter Muster verursacht diesen Fehler haben, aber ich bin ziemlich sicher, das ist nicht das Problem hier:

database settings

Mit PhpStorm 10.0.3

+1

PhpStorm kennt Ihren Tabellennamen nicht, da er dynamisch in einer PHP-Variablen gesetzt ist: '$ this-> tableName' –

+0

Ah ok. Gibt es einen Kommentar, mit dem ich den Tabellennamen angeben kann? Wie mit/** @noinspection SqlResolve */aber etwas schlauer. Der Tabellenname wird am Anfang der Klasse gesetzt, kann er das nicht sehen? Würdest du diesen Fehler einfach ignorieren oder einfach den oben genannten Noinspection-Kommentar verwenden? –

+0

Was würden Sie in diesem Fall tun? Ich komme aus einem erhabenen Text und das ist meine erste IDE! Ich möchte also ein gutes System lernen und es "richtig" machen. Gibt es einen Kommentar, den ich hinzufügen kann wie die @ Methode für dynamische Methoden? –

Antwort

3

Also die kurze Antwort ist, dass es den Tabellennamen nicht als Variable lesen kann, obwohl es in einer Variablen oberhalb gesetzt ist. Ich dachte, dass PhpStorm das schaffen könnte. Der einzige Weg, um den Fehler zu beseitigen wäre, entweder vollständig SQL Kontrollen auszuschalten (natürlich nicht ideal, da ich es in meinem Projekt verwenden) oder vorübergehend nur für diese Aussage deaktivieren Sie den doc Kommentar mit:

/** @noinspection SqlResolve */ 

War in der Hoffnung, einen fokussierteren Kommentar zu finden, ähnlich dem @var oder @method, um Phphstorm zu sagen, was der Tisch sein sollte, damit er den Rest der Aussage noch in Augenschein nehmen kann. Etwas wie: /** @var $this->tableName TABLE_IM_USING */ Vielleicht wird JetBrains in der Zukunft das hinzufügen oder PhpStorm clever genug machen, um die 3 Zeilen der Variablen oben zu betrachten.

+0

wie SQL-Inspektionen zu deaktivieren? –

0

Sie können Nowdoc/Heredoc verwenden auch statt

/** @noinspection SqlResolve */ 

Hier verwendet, ist das Beispiel

$name = "your name"; 
$query = <<<SQL 
SELECT * FROM user WHERE name LIKE "%$name%" ORDER BY id 
SQL; 

die Warnung

gegangen Beide Verfahren machen
1

Sie die SQL definieren Auflösung in File -> Settings -> Languages & Frameworks -> SQL Resolution Scopes.

enter image description here

Auf diese Weise können Sie eine Standard für das gesamte Projekt zur Verfügung zu stellen und Sie können optional bestimmte Mappings auf bestimmte Pfade im Projekt definieren.

+0

Danke!Alle Datenquellen funktionieren nicht für mich, aber ich habe das Schema (in der postgresql-Datenbank) ausgewählt und jetzt funktioniert es! –

Verwandte Themen