フィールドとフィールドインスタンスの違いは?


15

パスに移動してオプションまたはオプション/admin/structure/types/manage/article/fieldsを使用すると、フィールドが作成されますか、フィールドインスタンスが作成されますか、フィールドインスタンスが添付されますか?それらを区別する方法は?それでは、プログラムで、field_create_fieldfield_create_instanceおよびfield_attach APIをいつ使用するのでしょうか?Add new fieldAdd existing field

フィールドAPIドキュメントでは、管理UIのみに言及しており、フィールドとフィールドインスタンスの両方を作成するパスについては言及していません。それでわかりにくいです。理にかなっているかどうかさえわかりません。


これは、それを分かりやすく説明する必要がありますdikini.net/31.08.2010/...
クライヴ

通常の場合、追加する各フィールドはデータベースに新しいフィールドを作成し、既存のフィールドを追加すると、新しいテーブルは作成されず、既存のテーブルに追加されるだけです。
モハメッドシャミーム

1
@Mohammed Shameem、それではインスタンスはどうですか?ユースケースは何ですか?それとも、実際にはどこで使用しますか?
ユージンジェローム

1
目的が同じであるか、機能が同じになる場合は、常に同じフィールドインスタンスを使用することをお勧めします。たとえば、すべてに追加される同じ分類語彙を持つ異なるコンテンツタイプがあります。各コンテンツタイプに異なるフィールドを作成するよりも、すべてのコンテンツタイプに同じフィールドを追加することをお勧めします。内部的には、これはdrupalによって構築されるテーブルの数を減らします。語彙の検索が改善されます。
モハメッドシャミーム

1
そのため、パスに表示さnode/add/articleれるフィールドはフィールドインスタンスです(複数の異なるエンティティタイプで再利用されます)。そして、パスの/admin/structure/types/manage/article/fieldsフィールドはフィールドです。データベースでは、私は、フィールドのインスタンステーブルを参照してくださいが、私は推測するしかfield_dataテーブルはありません、我々は最初のパスでフィールドを作成するとき、我々が得る/admin/structure/types/manage/article/fields使用しますfield_create_field。そして、インスタンスは、pathにあるバンドル(この場合は記事)にアタッチされますnode/add/article
ユージンジェローム

回答:


24

フィールドは、フィールド自体の基本的な定義です。フィールドインスタンスは、そのフィールドのインスタンスであり、エンティティ/バンドルに接続されています。

  1. フィールドはfield_create_fieldで作成されます
  2. field_create_instanceを使用したフィールドインスタンス

フィールドまたはインスタンスが存在するかどうかを確認するには、使用します

  1. field_info_fieldまたは
  2. field_info_instance

UIを介してフィールドを作成すると、Drupalは常にそのエンティティ/バンドルにフィールドインスタンスを作成します。

既存のフィールドを追加する場合、フィールドデータが複製され、新しいエンティティ/バンドルにフィールドインスタンスが作成されます。

最後に、フィールド設定はそのフィールドにグローバルに適用され、フィールドインスタンス設定はエンティティバンドル間で異なる場合があります。


2
どうもありがとう、あなたは私の疑問をクリアしました。特権があれば、あなたの投稿を+1します。
ユージンジェローム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.