2017-03-10 7 views
0

MySQLを使用したWebサイト(Laravel & AngularJS)があります。 私はPostgresに変更しようとしています。データベースは作成され、アクセス可能です(データベースを共有する別のアプリケーションがあるため、変更できない小文字のすべての列があります)。 問題はLaravelのを照らし、列の前後に引用符でDBクエリを作成しているは、このようなキー:laravel db postgresql引用符付きの列

DB::table('generalsettings')->where('settingsKey', '=', 'LicenseSerial'); 

これが作成されます: "settingsKey" = "generalsettings" SELECT * FROM 'LicenseSerial'

どの列のキーが小文字であるために機能しません。 イルミネイトのDBを列キーに引用符を付加しないように設定する方法はありますか?

+0

私がこの権利を読んでいるのであれば、送信している名前が小文字ではなく、列名が小文字であることが問題です。 – Samsquanch

答えて

0

いいえ、アプリケーションレベルでこれを制御するための設定値などはありません。あなたの最善の策は、あなたのカラム名が大文字と小文字を区別していることを知り、あなたの質問を正しく書いていることを確認することです。

他に2つのオプションがありますが、それほど美しいものではありません。

まず

、Laravelは、式をラップしないので、次のように動作します:これは、もちろん、意味

DB::table('generalsettings')->where(DB::raw('settingsKey'), '=', 'LicenseSerial'); 

あなたはDB::raw()への呼び出しで指定したすべての列名をラップする必要があると思います。

2番目のオプションは、クエリビルダーのファイルを拡張して上書きして、列のエスケープを停止します。これは多くの作業と非常にエラーが発生する可能性があります。詳細には触れませんが、少なくともPostgresGrammar,Grammar、およびPostgresConnectionをオーバーライドしてから、すべてサービスプロバイダに配線する必要があります。

+0

私はコード内のすべての列名を小文字にするつもりです。仕事は増えるが危険は少なくなると思う。ご協力ありがとうございました。 – user3297530

関連する問題