Hey Gav,<div><br></div><div>I think you mean &#39;database abstraction&#39;, our team has found that propel is more than enough for our needs, you specify a schema in xml which is relatively straight forward and you define table relations in the schema as well. It will produce the create sql statements and then generate classes for your tables. You can then easily extends them by modifying the class. You then do queries by either selecting by id from the &#39;peer&#39; object, for example:</div>
<div><br></div><div>  $product = ProductPeer::retrieveByPK($id);</div><div><br></div><div>or you can create a criteria:</div><div><br></div><div>  $c = new Criteria();</div><div>  $c-&gt;add(ProductPeer::PRODUCT_STATUS, 45);</div>
<div>  $c-&gt;add(ProductPeer::ACTIVE, true);</div><div><br></div><div>  $products = ProductPeer::doSelect($c);</div><div><br></div><div>retrieving cell values is easy:</div><div><br></div><div>  $product_name = $product-&gt;getName();</div>
<div><br></div><div>modifying elements is easy enough, if a product has a name you modify it by:</div><div><br></div><div>  $product-&gt;setName($new_name);</div><div><br></div><div>and to save changes:</div><div><br></div>
<div>  $product-&gt;save();</div><div><br></div><div>and if you want to delete from the database:</div><div><br></div><div>  $product-&gt;delete();</div><div><br></div><div>Additionally if a category has products you can get them using:</div>
<div><br></div><div>$category-&gt;getProducts();</div><div><br></div><div>Although this requires you to specify a name for the relation in the schema.</div><div><br></div><div>Hope this is helpful.</div><div><br></div><div>
Kind Regards,</div><div><br></div><div>Adam Smith<br></div>