Много-много отношений с таксономией в Eloquent
Я использую Laravel 4. У меня много-много отношений в моей системе. И я решил использовать схему таблиц таксономии Wordpress.
Но как я могу создать модели отношений с Laravel 4 Eloquent ORM? Вот мои таблицы базы данных;
Таблицаterms
:+------------+---------------------+------+-----+---------+----------------+
| 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 | | |
+------------+---------------------+------+-----+---------+----------------+
Таблицаterm_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 | |
+------------------+---------------------+------+-----+---------+----------------+
Таблицаterm_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 | |
+------------------+---------------------+------+-----+---------+-------+
Обычно мы можем сделатьreturn $this->belongsToMany('Term');
но как мы можем сделать 2 отношения? Нам нужно 2 отношения: сначала найти термин таксономия из таблицы "term_taxonomy", а затем найти отношения термин с "taxonomy_id".
И пример того, как я хочу использовать;
$categories = Post::find(1)->categories; // get terms with taxonomy="post_category"
$tags = Post::find(1)->tags; // get terms with taxonomy="post_tag"
Я не хочу делать это с базовым классом базы данных "DB::table('table')->join('...')...
«Я хочу использовать методы и модели Eloquent.