Sto leggendo laravel 5.2 documenti per implementare molte o molte relazioni polimorfiche nella mia applicazione Laravel. Ho molti modelli come Blog
, Question
, Photo
ecc. E voglio avere un sistema di Tagging per tutti loro. ho creato tabella delle variabili con seguente schemaCome utilizzare la relazione polimorfica da molti a molti in Laravel 5.2
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('slug')->unique();
$table->timestamps();
});
Di seguito è riportato schema della tabella pivot. nome della tabella pivot è 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');
});
Questo è il rapporto definito nella Tag
modello per Question
modello
public function questions()
{
return $this->belongsToMany('App\Question', 'entity_tags', 'tag_id', 'taggable_id');
}
E la seguente relazione è definito in Question
Modello
public function tags()
{
return $this->belongsToMany('App\Tag', 'entity_tags', 'taggable_id', 'tag_id');
}
Ora voglio definire da molti a molti la relazione Polimorfica come definita in Laravel 5.2.
La mia domanda sono
- come posso definire?
- Devo rimuovere la relazione Molti a Molti e definire solo una relazione polimorfica da Molte a Molte? In caso affermativo, come gestire il nome della tabella pivot personalizzata?
- Inoltre è necessario il suffisso del nome della colonna con la parola
able
che fa parte della relazione polimorfa ?
ho provato la soluzione, ma al di sotto è l'errore, quando io stavo salvando una nuova domanda 'SQLSTATE [42S22] : Colonna non trovata: 1054 Colonna sconosciuta 'tagz_type' in 'where clausola' (SQL: selezionare 'entity_type' da 'entity_tags' dove 'entity_id' = 4 e 'tagz_type' = App \ Question) ' Penso che il secondo parametro dovrebbe essere 'xyz' –
Un'altra cosa, invece di' xyz_id' e 'xyz_type', ho usato' entity_id' e 'entity_type' –