2016-05-12 6 views
0

ほとんどの人がこれを自分で考えているかもしれませんが、私は全然ノブですので、この質問を他のノブのために打ち明けます。タグ付けシステムでtaggable_idとは何ですか?

私はLaravelフレームワーク用のタグ付けシステムであるlaravel-taggingをセットアップしようとしています。おそらく他のタグ付けシステムと同様の構造を持っています。これは、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であり、この関係により、モデルは1つの関連で複数の他のモデルに属することができます。

PostCommentモデルがあり、両方ともtagsを持つことができます。

両方のテーブルを1つだけ使用する必要があります。

そして、私は何taggable_idを把握することができたwhyguyの答えにtaggable_type列が所有しているモデルのクラス名が含まれていますながらtaggable_idカラムは、ポストまたはコメントのID値を持つことになります

0

おかげで、 taggable_typeとその使い方私がこれを書いているので、Laravelは多相関係を利用するいくつかの主要なフレームワークの1つです。しかし、データベーススキーマを実装するのに必要なコードの量を最小限に抑えるという点で非常に便利です。

Laravelの多形性関係によって混乱している人は、here is a youtube videoが役に立ちました。それについてはhere is a piece of Laravel documentationです。

関連する問題