我正在閱讀laravel 5.2文檔以在我的Laravel應用程序中實現多對多多態關係。 我有像Blog
,Question
,Photo
等許多模型等,我想要所有的標籤系統。 我創建了具有以下架構的Tag表格如何在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中定義的多對多關係。
我的問題是
- 我怎麼能定義它們?
- 我是否應刪除多對多關係並只定義多對多關係? 如果是,那麼如何管理自定義數據透視表名稱?
- 此外,它是否需要後綴列名稱與單詞
able
是 多態關係的一部分?
我嘗試瞭解決方案,但以下是誤差,當我保存的新問題 'SQLSTATE [42S22] :未找到列:1054'where子句'中的未知列'tagz_type'(SQL:從'entity_tags'中選擇'entity_type'其中'entity_id'= 4和'tagz_type'= App \ Question)' 我認爲第二個參數應該是'xyz' –
還有一件事,我沒有使用'xyz_id'和'xyz_type',而是使用了'entity_id'和'entity_type' –