Propel ORM:如何在where子句中使用自己的括号

时间:2012-02-26 22:01:40

标签: sql database propel

我使用propel进行数据库交互。现在我必须创建一个像

这样的查询
SELECT data FROM values WHERE a=1 AND (vis=1 or (vis=0 AND userID=5));

我从“值”表中创建一个推进对象。

$p = new ValuesQuery()::create
   ->filterByA(1)
   ->filterByVis(1)
   ->_or()
   ->filterByVis(0)
   ->filterByUserId(5)
   ->findOne();

Propel生成以下几乎有意义的SQL查询:

SELECT data FROM values WHERE a=1 AND (vis=1 or vis=0) AND userID=5;

我该如何解决这个问题?是否可以说推进它应放在括号中的内容?

感谢所有答案!

2 个答案:

答案 0 :(得分:1)

使用下一个工具不仅可以回答您的特定问题,还可以帮助您了解条件的复杂程度。

http://propel.jondh.me.uk/criteria/analyse

答案 1 :(得分:1)

正如@halfer所说,请阅读以下文档,了解如何组合几个条件:http://www.propelorm.org/reference/model-criteria.html#combining_several_conditions