Propel(PostgreSQL)语法错误在"."附近.

Sam*_*Sam 1 php postgresql 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
}
Run Code Online (Sandbox Code Playgroud)

第一个查询工作正常,但第二个查询生成并出错: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查询构建器都顺利工作.

Sam*_*Sam 5

回答minitech评论.

user是一个保留的ANSI SQL术语.要么SELECT "user".id FROM "user"必须使用或表必须改名.我把桌子改名为account,一切都很顺利.

  • @jakerella:根据ANSI SQL,它是一个保留字 (3认同)