Viele bis viele Beziehungen zur Taxonomie in Eloquent
Ich benutze Laravel 4. Ich habe viele bis viele Beziehungen in meinem System. Und ich entscheide mich für die Verwendung des Wordpress-Taxonomietabellenschemas.
Aber wie kann ich mit Laravel 4 Eloquent ORM Modellbeziehungen aufbauen? Hier sind meine Datenbanktabellen;
Tabelleterms
:+------------+---------------------+------+-----+---------+----------------+
| 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 | | |
+------------+---------------------+------+-----+---------+----------------+
Tabelleterm_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 | |
+------------------+---------------------+------+-----+---------+----------------+
Tabelleterm_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 | |
+------------------+---------------------+------+-----+---------+-------+
Normalerweise können wir das tunreturn $this->belongsToMany('Term');
aber wie können wir 2 beziehungen machen? Wir benötigen 2 Beziehungen. Suchen Sie zuerst den Begriff Taxonomie in der Tabelle "term_taxonomy", und suchen Sie dann den Begriff Beziehungen mit "taxonomy_id".
Und ein Beispiel dafür, wie ich es verwenden möchte;
$categories = Post::find(1)->categories; // get terms with taxonomy="post_category"
$tags = Post::find(1)->tags; // get terms with taxonomy="post_tag"
Ich möchte dies nicht mit der Basisdatenbankklasse machen. "DB::table('table')->join('...')...
"Ich möchte eloquente Beziehungsmethoden und Modelle verwenden.