Я читаю laravel 5.2 docs для реализации многих-многих полиморфных отношений в моем приложении Laravel. У меня есть много моделей, таких как Blog
, Question
, Photo
и т. Д., И я хочу иметь систему маркировки для всех них. Я создал таблицу тегов со следующей схемойКак использовать много-много полиморфных отношений в Laravel 5.2
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('slug')->unique();
$table->timestamps();
});
Ниже сводная таблица схема. Название Сводная таблица является 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');
});
Это соотношение определяется в Tag
модели для Question
модели
public function questions()
{
return $this->belongsToMany('App\Question', 'entity_tags', 'tag_id', 'taggable_id');
}
И следующее соотношение определяется в Question
модели
public function tags()
{
return $this->belongsToMany('App\Tag', 'entity_tags', 'taggable_id', 'tag_id');
}
Теперь я хочу Определите много-много полиморфных отношений, как определено в Laravel 5.2.
Мой вопрос являются
- как я могу определить их?
- Должен ли я удалить отношение Many to Many и определить только многие из многих полиморфных отношений? Если да, то как управлять настраиваемым именем сводной таблицы?
- Также требуется суффикс имени столбца со словом
able
, которые являются составными частями полиморфных отношений?
Я попробовал решение, но ниже ошибки, когда я спасал новый вопрос 'SQLSTATE [42S22] : Столбец не найден: 1054 Неизвестный столбец 'tagz_type' в 'where clause' (SQL: выберите 'entity_type' из 'entity_tags', где 'entity_id' = 4 и 'tagz_type' = App \ Question) ' Я думаю, что второй параметр должен быть 'xyz' –
Еще одна вещь, вместо' xyz_id' и 'xyz_type', я использовал' entity_id' и 'entity_type' –