Ich lese Laravel 5.2 Dokumente, um viele zu viele polymorphe Beziehung in meiner Laravel-Anwendung zu implementieren. Ich habe viele Modelle wie Blog
, Question
, Photo
etc und ich möchte Tagging-System für alle von ihnen haben. I Tag-Tabelle mit folgendem Schema erstellt habenWie zu viele polymorphe Beziehung in Laravel verwenden 5.2
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('slug')->unique();
$table->timestamps();
});
Im Folgenden finden Sie Pivot-Tabellenschema. Pivot-Tabelle Name ist entity_tags
Schema::create('entity_tags', function (Blueprint $table) {
$table->increments('id');
$table->integer('tag_id')->unsigned();;
$table->integer('taggable_id')->unsigned();
$table->string('taggable_type');
$table->timestamps();
$table->index('tag_id');
$table->index('taggable_id');
$table->index('taggable_type');
});
Dies ist die Beziehung in Tag
Modell für Question
Modell definiert ist
public function questions()
{
return $this->belongsToMany('App\Question', 'entity_tags', 'tag_id', 'taggable_id');
}
Und die folgende Beziehung definiert in Question
Modell
public function tags()
{
return $this->belongsToMany('App\Tag', 'entity_tags', 'taggable_id', 'tag_id');
}
Jetzt möchte ich Definiere viele bis viele polymorphe Beziehungen wie in Laravel 5.2 definiert.
Meine Frage ist
- , wie ich sie definieren?
- Sollte ich die Viele zu Viele Beziehung entfernen und nur viele zu viele polymorphe Beziehung definieren? Wenn ja, wie wird der Name der benutzerdefinierten Pivot-Tabelle verwaltet?
- Ist es auch erforderlich, den Spaltennamen mit dem Wort
able
zu ergänzen, die Teil der polymorphen Beziehung sind?
ich die Lösung versucht, aber unten ist der Fehler, wenn ich eine neue Frage 'SQLSTATE [42S22] Speichern : Spalte nicht gefunden: 1054 Unbekannte Spalte 'tagz_type' in 'where-Klausel' (SQL: select 'entity_type' aus 'entity_tags' wobei 'entity_id' = 4 und 'tagz_type' = App \ Question) ' Ich denke, der zweite Parameter sollte 'xyz' sein –
Noch eine Sache, anstelle von' xyz_id' und 'xyz_type' habe ich' entity_id' und 'entity_type' verwendet –