El ORM de Laravel (como otros ORMs), permite establecer relaciones entre modelos:
http://laravel.com/docs/eloquent#relationships
De tal manera que es posible en el controlador hacer simplemente esto (una vez definidas las relaciones entre modelos):
Código PHP:
Ver original$posts = Post::with('users')->get();
$posts = Post::with('users', 'comments')->get();
$posts = Post::with('users.country', 'comments')->get();
De todas formas, este sistema, si bien es cómodo y rápido, tiene una pega: no puedes testear sin acceder realmente a la base de datos. Por eso es recomendable trabajar con "repositorios" que proporcionen los datos, de manera que estos oculten el origen (ya sea base de datos, xml, o un simple array para testear).
Ejemplos en Laravel y Symfony:
http://culttt.com/2013/07/08/creatin...-repositories/ http://net.tutsplus.com/tutorials/ph...l-controllers/ http://symfony.com/doc/current/book/...sitory-classes