1

私はデータベースをセットアップし (現在、user と email の 2 つのテーブルのみで進行中です)、Propel と統合しています。ユーザーを登録するとき、私は電子メールがまだ存在していないことを確認します (電子メールテーブルの現在の電子メールまたはユーザーデータベースの元の電子メールとして)。

propel で簡単にこれを行うには、以下を使用します。

if(EmailQuery::create()->filterByCurrent(TRUE)->findOneByEmailAddress($email) != NULL) {
    // email address being used currently
} else if(UserQuery::create()->findOneByOriginalEmail($email) != NULL) {
    // email address claimed on account already
}

最初のクエリは正常に動作しますが、2 番目のクエリはエラーを生成します: Syntax error: 7 ERROR: syntax error at or near "." Propel によって生成された SQL クエリは次のようになります:

SELECT user.id, user.original_email, user.password, user.accept_terms, user.paid, user.customer_id, user.trial_end, user.created_at, user.updated_at, user.ip_address FROM user WHERE user.original_email=:p1 LIMIT 1

これをコピーして phpPgAdmin に貼り付けると、同じエラーが返されます (ユーザーと列の間の各 . を指します)。私は PostgreSQL を初めて使用します。不足している構文はありますか? 私が使用した他のすべての Propel クエリ ビルダーは問題なく動作しました。

4

1 に答える 1

5

minitechさんのコメントからの回答。

user予約済みの ANSI SQL 用語です。を使用するかSELECT "user".id FROM "user"、テーブルの名前を変更する必要があります。テーブルの名前を に変更しましたがaccount、すべて問題ありません。

于 2013-03-06T00:47:53.090 に答える