0

我有以下查询:

$tagCordQuery = $this->freqDb->select()
                    ->from("rr_amplifiers", "*")
                    ->join("amplifiers_coordinate", "amplifiers_coordinate.name = TRIM(TRAILING '0' FROM  rr_amplifiers.name)", array())
                    ->where("amplifiers_coordinate.name IN(?)", $apsName);

其中 $apsName 是一个数组。

问题是当这个数组只有一个元素时,查询有额外的括号,如下所示:

SELECT `rr_amplifiers`.* FROM `rr_amplifiers`
 INNER JOIN `amplifiers_coordinate` ON amplifiers_coordinate.name = TRIM(TRAILING '0' FROM  rr_amplifiers.name) WHERE (amplifiers_coordinate.name IN('xpto'))

为什么会这样?

4

2 回答 2

2

Zend Framework 允许您添加多个where语句。始终将子句括在括号中可防止出现意外的逻辑。

于 2013-06-24T14:20:14.550 回答
2

如果你做了这样的事情:

->where("amplifiers_coordinate.name IN(?) OR something = 1", $apsName);

(即在 WHERE 中包含 OR 条件)。没有括号,查询将无法按预期工作。

于 2013-06-24T14:19:49.543 回答