Php 推进选择条件中的IF语句

Php 推进选择条件中的IF语句,php,sql,mysql,symfony1,propel,Php,Sql,Mysql,Symfony1,Propel,我试图将IF语句合并到我的标准中。 以下是我如何建立我的标准: $c = is_object($c) ? $c : new Criteria(); $c->addSelectColumn("CONCAT(DAYOFYEAR(" . SomePeer::CREATED_AT . "), ' ', YEAR(" . SomePeer::CREATED_AT . ")) AS period"); $c->addSelectColumn("COUNT(" . SomePeer::ID . "

我试图将IF语句合并到我的标准中。 以下是我如何建立我的标准:

$c = is_object($c) ? $c : new Criteria();
$c->addSelectColumn("CONCAT(DAYOFYEAR(" . SomePeer::CREATED_AT . "), ' ', YEAR(" . SomePeer::CREATED_AT . ")) AS period");
$c->addSelectColumn("COUNT(" . SomePeer::ID . ") AS registrations");
$c->addSelectColumn("COUNT(IF(" . SomePeer::JOIN . " > 0 AND " . SomePeer::JOIN . " < 3, 1, NULL)) AS coreg");
$c->addJoin(SomePeer::IDENTIFIER, self::TRACKING_IDENTIFIER);
$c->add(SomePeer::ASSOCIATE_ID, $user->getId());
$c->addJoin(self::USER_ID, SomePeer::ID);
$c->addJoin(SomePeer::ID, SomePeer::USER_ID);
$c->add(SomePeer::CREDENTIAL, 'student');
$c->addJoin(SomePeer::PROFILE_ID, SomePeer::ID);
但是,在检查生成的SQL时,我得到以下结果:

SELECT CONCAT(MONTHNAME(some_table.CREATED_AT), ' ', YEAR(some_table.CREATED_AT)) AS period, COUNT(some_table.ID) AS registrations, COUNT(IF(some_table.JOIN > 0 AND some_table.JOIN < 3, 1, NULL)) AS coreg 
FROM `some_table`, `>` `0` `AND` `some_table`, `some_table`, `some_table`, `some_table`, `some_table` 
WHERE some_table.ASSOCIATE_ID=:p1 
AND some_table.CREDENTIAL=:p2 
AND some_table.IDENTIFIER=some_table.TRACKING_IDENTIFIER 
AND some_table.STUDENT_USER_ID=some_table.ID 
AND some_table.ID=some_table.USER_ID 
AND some_table.PROFILE_ID=some_table.ID 
# Params: some_table.ASSOCIATE_ID => 6, some_table.CREDENTIAL => 'credential'"
基本上,正如您所看到的,查询的FROM部分都是错误的。我猜Prope将COUNT中IF语句的一部分误认为是表名,并将它们包含在查询的FROM部分中。 有没有人知道我该如何解决这个问题,或者有人能找到工作

谢谢你的帮助


Vincent看来问题出在JOIN这个名字上。您是否使用联接作为字段名???请尝试其他名称。

抱歉,字段名为JOIN\u XYZ已删除后一部分,以便在不考虑保留名称的情况下缩短代码。不确定,请尝试以下操作:$c->addSelectColumnCOUNT。SomePeer::ID。作为注册$c->addSelectColumnSomePeer::ID$c->addSelectColumnCOUNTIF。SomePeer::加入_XYZ.>0和。SomePeer::加入XYZ.<3,1,取芯为空$c->addSelectColumnSomePeer::JOIN_XYZ;最后一个镜头-尝试切换到此语法:$c->addAsColumnregistrations,COUNT.SomePeer::ID。;