1

我建立了一个数据库(目前只有两个表:用户和电子邮件)并与 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
}

第一个查询工作正常,但第二个查询生成错误: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 回答