Silverstripe将filterAny和filter结合起来,使OR与OR结合

时间:2014-08-24 18:43:36

标签: silverstripe

我有一个问题,也许有人可以帮我弄清楚实现解决方案的最佳方法。我想做的是反过来:

http://doc.silverstripe.com/framework/en/topics/datamodel#highlighter_745635

WHERE ("LastName" = 'Minnée' AND ("FirstName" = 'Sam' OR "Age" = '17'))

我希望得到以下内容:

WHERE( ("LastName" = 'Minnée') OR ("FirstName" = 'Sam' AND "Age" = '17'))

现在我找不到任何方法来实现这种效果,因为我无法在filterAny中添加过滤器

现在,我正在使用get() - > where(...)选项,但是如果他们是替代选项而不必编写正常的SQL代码,则更想知道这个问题。

1 个答案:

答案 0 :(得分:2)

As' AND'有一个更高的优先级,它不需要在括号中。你可以把它写成:

WHERE( "LastName" = 'Minnée' OR "FirstName" = 'Sam' AND "Age" = '17')

但据我所知,在第一眼看来,没有使用where()就没有办法写这个。如果您找到方法,请告诉我们。对于debuging,您可以通过调用函数sql():

来显示生成的SQL-Query
... get()->where( ... )->sql();