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());
(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());
Sections