Eloquent ORM / Laravel - verwenden Sie benutzerdefinierte pivot-Tabelle, Struktur
Ich versuche zu bauen, ein Laravel-app mit einer angepassten Datenbank-Struktur. Ich habe Tabellen types
, units
, content
, und eine pivot-Tabelle genannt relations
. Die Struktur der relations
Tabelle ist so:
---------------------------------------------
| id | relation_type | first_id | second_id |
---------------------------------------------
| 1 | type_unit | 1 | 2 |
---------------------------------------------
| 2 | unit_content | 2 | 3 |
---------------------------------------------
In anderen Worten, die ersten drei Tabellen haben viele-zu-viele-Beziehungen unter sich, und die vierte ist die pivot-Tabelle für alle Beziehungen. Wie kann ich mit der Eloquent ist BelongsToMany
Methode mit dieser pivot-Tabelle Struktur, d.h. wie kann ich auswählen, nur die pivot-Tabelle die Datensätze relevant, die zu dem gegebenen Zusammenhang? Zum Beispiel, wie würde ich nur die type_unit Beziehungen, in:
class Type extends Eloquent {
public function units()
{
return $this->belongsToMany('Unit', 'relations');
}
}
aber zur gleichen Zeit ignorieren die unit_content Beziehungen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
belongsToMany
akzeptieren würde 3. und 4. Argumente. Sie können es sehen in der Dokumentation: http://laravel.com/docs/eloquent#relationshipsAber die Sache, die nicht in der Dokumentation ist, dass Sie constraint Ihre Beziehung durch die Verkettung der query builder-Funktionen wie
where
,orderBy
etc.Also würde der code so etwas wie: