The Avalon database package makes use of the Doctrine Database Abstraction Layer, it is essentially a small wrapper around it that provides a simple "Model" system.
This is not an ORM.
Models are a representation of a database row, you can select, update and delete rows with models.
When using a model to fetch data, it will automatically be placed into a model for you.
class Article extends Avalon\Database\Model {}
$articles = Article::where('is_published = :is_published')
->andWhere('user_id = :user_id')
->setParameter('is_published', 1)
->setParameter('user_id', 5)
// Normally with Doctrine and PDO you would call `->execute()`,
// you could do that here, but it would return the statement.
//
// If you simply call `fetchAll()` you will get an array of `Article` models.
->fetchAll();
foreach ($articles as $article) {
echo $article->title;
}