1

我有以下代码:

$somethingArray = array( 3, 4, 5 );

$myObjects = MyObjQuery::create()
  ->filterBySomething( $somethingArray )
  ->filterById( array( 'min' => $minMyObjID ) )
  ->orderByObjTimestamp('DESC')
  ->find();

根据 Propel 文档,应该会生成一个 SQL 命令,该命令最终会检查“某物”是否在 somethingArray 数组中,并且 id 是否 > $minMyObjID。但是,id 是 IN 而不是 >。

如果我改为执行以下操作:

$myObjects = MyObjQuery::create()
  ->filterBySomething( $somethingArray )
  ->where( 'id > ' . $minMyObjID )
  ->orderByObjTimestamp('DESC')
  ->find();

生成的 SQL 是我所期望的。这是一个 Propel 错误,还是我在涉及 filterByXXX 参数时误解了文档?

4

1 回答 1

1

我在 Propel 错误跟踪器上发现了一个问题:https ://github.com/propelorm/Propel/issues/327

这是一个官方错误。暂时没有补丁。

一种解决方法是使用 : 的第二个参数filterByIdcomparison

->filterById($minMyObjID, '>')

这会导致您找到相同的工作,但以更推进的方式

于 2012-11-07T20:45:17.970 回答