I am not certain of the best way to do this with Propel, but a way I just recently did was to do 2 separate queries, using a select on the first one to only get Id's. This query returns an array of Id's which can then be passed to the second query. It is less efficient than a single DB call, but the code is pretty easy to read (bear with me, this is my first attempt to get some code into an answer)
Here is a quick tested example from the location I happend to be working in in my own codebase:
$posts = PostsQuery::create()->select('Id')->filterByDeleted(ACTIVE_RECORD)->filterByPostTypeId($postType->getId())->limit(5)->find()->toArray();
$posts2 = PostsQuery::create()->filterById($posts)->find();
the first object ($posts) is:
array(5) {\n [0]=>\n string(3) "374"\n [1]=>\n string(3) "375"\n [2]=>\n string(3) "376"\n [3]=>\n string(3) "377"\n [4]=>\n string(3) "378"\n}\n
...and the second is the full 5 rows.
Disclaimer for this being a simplified example that originally was just a paginated query:
$posts = CmsPostsQuery::create()->filterByDeleted(ACTIVE_RECORD)->filterByPostTypeId($postType->getId())->paginate($pageNum,10);
I stumbled across a better answer for you at:
ORM Solution for really complex queries