Digamos que temos três tabelas, assim:
TABLE 1: pages
id | route | title
TABLE 2: elements
id | page_id | type
TABLE 3: content
id | element_id | data
Gostaria de fazer uma única seleção para a página que, por sua vez, selecionará todos os elementos com esse id de página e, para cada um dos elementos, deverá selecionar todas as linhas de conteúdo com o id do elemento.
Crie relacionamentos de modelos para os seguintes modelos:
class Page extends Eloquent {
public function elements()
{
return $this->has_many( 'Element' );
}
}
class Element extends Eloquent {
public function contents()
{
return $this->has_many( 'Content' );
}
}
class Content extends Eloquent {}
Olhe para o carregamento ansioso. Isso deve fazer o que você quiser.
$page = Page::with( array( 'elements', 'elements.contents' ) )->first();
Mais informações:
http://laravel.com/docs/database/eloquent#eager
http://stackoverflow.com/questions/15281163/how-to-chain-db-relationships-in-laravel-multiple-has-many