| Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|
| 29 | 30 | 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 |
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
3 weeks 3 days ago
3 weeks 4 days ago
3 weeks 4 days ago
4 weeks 11 hours ago
4 weeks 1 day ago
4 weeks 2 days ago
5 weeks 1 day ago
6 weeks 9 hours ago
8 weeks 2 days ago
8 weeks 2 days ago