Login | Register
My pages Projects Community openCollabNet

Discussions > dev > Re: [propel-dev] Criteria proposal

propel
Discussion topic

Back to topic list

Re: [propel-dev] Criteria proposal

Reply

Author hlellelid
Full name Hans Lellelid
Date 2006-05-31 05:49:59 PDT
Message Hi -

Ants Aasma wrote:
> Hi,
>
> I looked at the examples you provided. The SqlExpr class seems a bit
> evil to me, as it leaks the database independence abstraction. I don't
> think it should be completely eliminated, but I do think its use
> should be heavily discouraged. Propel should provide a way to abstract
> the more frequently used expressions and provide a way to build plug
> in custom expressions so that the database dependent code goes into a
> well defined place. This will probably bring up the need for the
> criteria interface to be a bit more datatype aware.
>
> So the example
> $c = AuthorPeer::getCriteria();
> $c->add(new SqlExpr("char_length(name) = 4"));
>
> could be something like:
> $c->add(new EqualExpr(StringFiel​d::LengthExpr(Author​Peer::FIRST_NAME), 4));

Yeah, that's not a bad idea. I agree that we want to keep things
abstract. The SqlExpr class is a response to a relatively frequent
request to get custom SQL into Criteria.

Actually, some of this abstraction has already been done, as part of the
DBAdapter system -- e.g. there is a length() method, concat(), etc.
Maybe we just need to document & encourage that approach to query stuff.

That said, I think we do need a way for people to use custom SQL,
because we're never going to account for all the crazy things people
want to do.

> By using this kind of SQL abstraction we could easily add commonly
> used abstract datatypes, such as timeperiod or money, and maybe even
> transparently support the Embedded Value (
> http://www.martinfow​ler.com/eaaCatalog/e​mbeddedValue.html ) pattern.
> This would shift propel a bit into the Data Mapper territory, but
> would make it a lot more suitable as a basis for a cleanly factored
> Domain Model.
>
> I still have to think a bit, how could we fit subqueries into the
> Criteria picture. It would be really sweet, if we could get something
> like this working:
> $c = HotelroomPeer::creat​eCriteria();
> $c->add( HotelroomPeer::RESER​VATIONS()->notAny​(
> ResevationPeer::TIME​PERIOD()->interse​cts( $conference->getTimeperiod()
> ) ) );
> $freeRooms = HotelroomPeer::doSelect( $c );

Yeah, I'm less concerned about subqueries, since they're still only
partially supported (AFAIK) in MySQL -- which definitely accounts for a
large percentage of the userbase (I'm definitely curious just how large
that percentage is). I certainly use subqueries, but at that point I'm
just writing custom SQL, so I'm not worried about fitting it into Criteria.

What I don't want to do is create an extremely heavy & complex Criteria
to account for usage scenarios that we don't want to encourage anyway.
We want Criteria to make writing straightforward queries very easy (and
straightforward queries may have joins). When we start getting into
custom SQL expressions, subqueries, etc., we can provide a bit of
support, but really I think we want to encourage peopel to write SQL, as
that is where portability breaks down anyway.

Hans

« Previous message in topic | 22 of 25 | Next message in topic »

Messages

Show all messages in topic

Criteria proposal hlellelid Hans Lellelid 2006-05-26 11:37:28 PDT
     Re: [propel-dev] Criteria proposal Cameron Brunner <cameron dot brunner at gmail dot com> Cameron Brunner <cameron dot brunner at gmail dot com> 2006-05-26 22:12:34 PDT
         Re: [propel-dev] Criteria proposal =?ISO-8859-1?Q?David_Z=FClke?= <dz at bitxtender dot com> =?ISO-8859-1?Q?David_Z=FClke?= <dz at bitxtender dot com> 2006-05-27 04:30:33 PDT
             Re: [propel-dev] Criteria proposal Cameron Brunner <cameron dot brunner at gmail dot com> Cameron Brunner <cameron dot brunner at gmail dot com> 2006-05-27 05:02:31 PDT
                 Re: [propel-dev] Criteria proposal =?ISO-8859-1?Q?David_Z=FClke?= <dz at bitxtender dot com> =?ISO-8859-1?Q?David_Z=FClke?= <dz at bitxtender dot com> 2006-05-27 08:17:09 PDT
                     Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-27 09:43:15 PDT
     Re: [propel-dev] Criteria proposal Ants Aasma <ants dot aasma at gmail dot com> Ants Aasma <ants dot aasma at gmail dot com> 2006-05-27 12:47:55 PDT
         Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-27 14:21:23 PDT
     Re: [propel-dev] Criteria proposal Alan Pinstein <apinstein at mac dot com> Alan Pinstein <apinstein at mac dot com> 2006-05-29 09:03:50 PDT
         Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-29 11:51:30 PDT
         Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-30 06:24:56 PDT
             Re: [propel-dev] Criteria proposal Alan Pinstein <apinstein at mac dot com> Alan Pinstein <apinstein at mac dot com> 2006-05-30 07:16:34 PDT
                 Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-30 07:48:57 PDT
                     Re: [propel-dev] Criteria proposal Cameron Brunner <cameron dot brunner at gmail dot com> Cameron Brunner <cameron dot brunner at gmail dot com> 2006-05-30 17:09:25 PDT
                     Re: [propel-dev] Criteria proposal Alan Pinstein <apinstein at mac dot com> Alan Pinstein <apinstein at mac dot com> 2006-05-30 17:34:24 PDT
                         Re: [propel-dev] Criteria proposal Cameron Brunner <cameron dot brunner at gmail dot com> Cameron Brunner <cameron dot brunner at gmail dot com> 2006-05-30 17:46:52 PDT
                         Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-30 18:43:06 PDT
                             Re: [propel-dev] Criteria proposal tamcy <7am dot online at gmail dot com> tamcy <7am dot online at gmail dot com> 2006-05-31 00:02:11 PDT
                                 Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-31 04:36:50 PDT
                             Re: [propel-dev] Criteria proposal Ants Aasma <ants dot aasma at gmail dot com> Ants Aasma <ants dot aasma at gmail dot com> 2006-05-31 04:06:51 PDT
                                 Re: [propel-dev] Criteria proposal Alan Pinstein <apinstein at mac dot com> Alan Pinstein <apinstein at mac dot com> 2006-05-31 05:12:11 PDT
                                 Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-31 05:49:59 PDT
                                     Re: [propel-dev] Criteria proposal Alan Pinstein <apinstein at mac dot com> Alan Pinstein <apinstein at mac dot com> 2006-05-31 06:05:32 PDT
                                         Re: [propel-dev] Criteria proposal hlellelid Hans Lellelid 2006-05-31 06:21:31 PDT
                                         Re: [propel-dev] Criteria proposal Ants Aasma <ants dot aasma at gmail dot com> Ants Aasma <ants dot aasma at gmail dot com> 2006-05-31 09:09:12 PDT
Messages per page: