2016-05-12 52 views
0

大多數人可能都是自己想出來的,但我是一個完全noob,所以我會爲了其他noob而給這個問題一個鏡頭。標記系統中的taggable_id是什麼?

我試圖設置laravel-tagging,這是一個用於Laravel框架的標記系統,它可能與任何其他標記系統具有相似的結構。它配備了2個表:

  1. tagging_tags
  2. tagging_tagged

tagging_tags是標籤的存儲位置。

tagging_tagged可能是存儲標籤文章的地方,但我不確定。

tagging_tagged包含列taggable_id,不來作爲主鍵,上有沒有自動增量:

Field    Type    Null Key Default Extra 
'id',    'int(10) unsigned', 'NO', 'PRI', NULL, 'auto_increment' 
'taggable_id', 'int(10) unsigned', 'NO', 'MUL', NULL,  
'taggable_type', 'varchar(255)',  'NO', 'MUL', NULL,  
'tag_name',  'varchar(255)',  'NO',   NULL,  
'tag_slug',  'varchar(255)',  'NO', 'MUL', NULL,  

taggable_id被標記的物品的外鍵?不應該被tagged_id呢?任何人都可以指向一些解釋標記系統結構的新手指南,或者只是解釋一下taggable_id的作用?

如果這個問題不合適,我很抱歉。

回答

1

這是Polymorphic Relation並且此關係允許模型屬於單個關聯上的多個其他模型。

想象你有PostComment模型,他們都可以有tags

您必須只使用一個表。

而且taggable_id欄將有信息或評論的ID值,而taggable_type列將包含所屬模型的類名

0

得益於whyguy的答案,我能找出什麼taggable_idtaggable_type是以及如何使用它們。在我寫這篇文章時,似乎Laravel是利用多態關係的少數主要框架之一。但是,儘量減少實現數據庫模式所需的代碼量似乎非常有用。

對於任何人在Laravel的多態關係感到困惑,here is a youtube video,我發現有幫助和here is a piece of Laravel documentation關於它。