Muitos para muitos relacionamentos com taxonomia em Eloquent
Estou usando o Laravel 4. Tenho muitos relacionamentos em meu sistema. E eu escolho usar o esquema de tabelas de taxonomia do Wordpress.
Mas como posso fazer relacionamentos de modelos com o Laravel 4 Eloquent ORM? Aqui estão as minhas tabelas do banco de dados;
Mesaterms
:+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| term_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(200) | NO | MUL | | |
| slug | varchar(200) | NO | UNI | | |
+------------+---------------------+------+-----+---------+----------------+
Mesaterm_taxonomy
:+------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+---------+----------------+
| term_taxonomy_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| term_id | bigint(20) unsigned | NO | MUL | 0 | |
| taxonomy | varchar(32) | NO | MUL | | |
| description | longtext | NO | | NULL | |
| parent | bigint(20) unsigned | NO | | 0 | |
| count | bigint(20) | NO | | 0 | |
+------------------+---------------------+------+-----+---------+----------------+
Mesaterm_relationships
:+------------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------------------+------+-----+---------+-------+
| object_id | bigint(20) unsigned | NO | PRI | 0 | |
| term_taxonomy_id | bigint(20) unsigned | NO | PRI | 0 | |
| term_order | int(11) | NO | | 0 | |
+------------------+---------------------+------+-----+---------+-------+
Normalmente nós podemos fazerreturn $this->belongsToMany('Term');
mas como podemos fazer 2 relacionamentos? Precisamos de 2 relacionamentos primeiro para encontrar a taxonomia de termos da tabela "term_taxonomy", depois de encontrar relações de termo com "taxonomy_id".
E um exemplo de como eu quero usar;
$categories = Post::find(1)->categories; // get terms with taxonomy="post_category"
$tags = Post::find(1)->tags; // get terms with taxonomy="post_tag"
Eu não quero fazer isso com a classe básica de banco de dados "DB::table('table')->join('...')...
"Eu quero usar métodos e modelos de relação eloquentes.