Doctrine is a database abstraction I haven't worked with much, but I believe it has some similar, if not better according to some, abilities to that of Propel. Propel requires that the user using the system sets up a schema in XML for it to use for both building the SQL to insert into databases to create tables and for querying. It then provides objects as an interface to the database. By doing things like BaseObject.getId(1), it returns an object of type Object that has methods like object->getName() that returns that contents of that column for that object. It basically lets the developer ignore SQL altogether because the XML is the only thing propel needs to create SQL that works with pretty much any database. It also has data loading capabilities from XML documents as well. A lot of this does need to happen on the command line, meaning, I don't know if they have an interface from PHP to do the data loading and what not, though they probably do. Altogether, the only thing required of the developer is to know that names of the objects that represent the database tables as well as writing the XML to represent the database and the data. You can see more on Propel at http://propel.phpdb.org/trac/
and more on Doctrine at http://www.phpdoctrine.org/
. Propel is the ORM with the higher version number, though this doesn't necessarily mean anything.
By using these object interfaces, the end result is a more layered system that becomes less locked into a certain way to do things. This gives a much more open system much like that of the OSI or TCP/IP models where each layer can be changed as long as the interfaces remain the same.