| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | 1 | 2 | 3 | 4 |
Nested ands and ors in Reactor's OO queries
Or, to put it another way, how can I put brackets in the where clause of Reactor's query ?
(Reactor ? That's a framework for ColdFusion that transparently generates a variety of objects which can be used to interact with a variety of database systems.)
So, I want to be able to say in my query:
where
( a or b or c)
and
( x or y )
but Reactor flattens this to:
where
a or b or c
and
x or y
which is a totally different thing.
Gah.
So, what to do ? Make use of Reactor's Where.addWhere() of course !
My code might start out looking like:
q.getWhere().setMode('Or');
q.getWhere().isEqual('cases','clientCode',arguments.clientID3);
q.getWhere().isEqual('cases','clientCode',arguments.clientID2);
q.getWhere().isEqual('cases','clientCode',arguments.clientID1);
q.getWhere().setMode('And');
q.getWhere().isLike('cases','debtorName',searchTerms.debtorname);
q.getWhere().setMode('Or');
q.getWhere().isLike('cases','debtorName2',searchTerms.debtorname);
This just needs a few changes to construct seperate where's for each part inside brackets:
w2=gw.createQuery();
w2.getWhere().setMode('Or');
w2.getWhere().isEqual('cases','clientCode',arguments.clientID3);
w2.getWhere().isEqual('cases','clientCode',arguments.clientID2);
w2.getWhere().isEqual('cases','clientCode',arguments.clientID1);
q.getWhere().addWhere(w2.getWhere());
w2=gw.createQuery();
w2.getWhere().isLike('cases','debtorName',searchTerms.debtorname);
w2.getWhere().setMode('Or');
w2.getWhere().isLike('cases','debtorName2',searchTerms.debtorname);
q.getWhere().addWhere(w2.getWhere());




Recent comments
1 week 1 day ago
1 week 2 days ago
1 week 2 days ago
3 weeks 3 days ago
5 weeks 3 days ago
11 weeks 6 days ago
16 weeks 1 day ago
16 weeks 6 days ago
17 weeks 1 day ago
17 weeks 3 days ago