2016-04-22 18 views
2

データベース接続を設定した後、今までのところ私のSQLクエリはすべてエラーなく正常に動作していました。この現在のコードは実際には2番目のデータベースを使用しています(1つは特定の製品の他のユーザー用です)ので、データベースタブにもその接続を追加しましたが、それでも私は「列を解決できませんでした。PhpStormが複数のデータベース接続の列を解決できません

どのデータベースを見ているかを確認する方法はありますか?複数のデータベースで動作しますか?それとも私は別の何かを間違ってしまった?以下

エラー:

error message

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

はまた、ここに私のデータベースの設定ウィンドウは、このエラーの原因となる一部の人々はパラメータパターンに問題が見られるように、どのように見えるかですが、私はそれがないかなり確信していますここでの問題:PhpStorm 10.0.3を使用して

database settings

+1

PHPの変数に動的に設定されているため、PhpStormはあなたのテーブル名を知らない: '$ this-> tableName' –

+0

いいえ。 tablenameを伝えるために使用できるコメントはありますか?/** @noinspection SqlResolve * /を使うのと同じですが、もっと巧妙なものです。テーブル名はクラスの先頭に設定されていますが、それは見えませんか?あなたはこのエラーを無視するか、上記のnoinspectionコメントを使用しますか? –

+0

あなたはこのインスタンスで何をしますか?私は崇高な文章から来て、これは私の最初のIDEです!だから良いシステムを学び、それを「正しい」ものにしたい。動的メソッドに@methodのようにコメントを追加できますか? –

答えて

3

これは、変数が上記の変数に設定されていても、変数としてテーブル名を読み取ることができないという短い答えです。私はPhpStormがそれを動かすことができると思った。エラーを除去するための唯一の方法は完全にSQL検査をオフにする(私は私のプロジェクト全体でそれを使用すると、明らかに理想的ではない)か、一時的にのみdocコメントを使用して、この文のためにそれを無効にするのいずれかに次のようになります。

/** @noinspection SqlResolve */ 

ました@varや@methodのようなもっと集中したコメントを見つけることができれば、Phpstormにはテーブルが何であるべきかを伝え、残りのステートメントを調べることができます。次のようなものがあります: /** @var $this->tableName TABLE_IM_USING */ 将来、JetBrainsがそれを追加するか、上記の変数3行を見るためにPhpStormを賢明にするでしょう。

+0

SQL検査を無効にする方法は? –

0

あなたが代わりにここで

/** @noinspection SqlResolve */ 

を使用するのでもNowdoc /ヒアドキュメントを使用することができますは、両方の方法は、あなたがSQLを設定することができます

1

を行って警告を行います例

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

です解像度の範囲はFile -> Settings -> Languages & Frameworks -> SQL Resolution Scopesです。

enter image description here

これは、あなたがプロジェクト全体のデフォルトを提供することを可能にし、必要に応じて、プロジェクト内の特定のパスに特定のマッピングを定義することができます。

+0

Thx!すべてのデータソースは私のために働いていませんが、私は(postgresqlデータベース内の)スキーマを選択して、今は動作しています! –

関連する問題