ビューを設計しましたが、このクエリはプレビューセクションに表示されます。
SELECT node.nid AS nid,
node_data_field_crm_history_brokerid.field_crm_history_brokerid_value AS node_data_field_crm_history_brokerid_field_crm_history_brokerid_value,
node.language AS node_language,
node.type AS node_type,
node.vid AS node_vid,
node_data_field_crm_history_brokerid.field_crm_history_caseid_value AS node_data_field_crm_history_brokerid_field_crm_history_caseid_value,
node_data_field_crm_history_brokerid.field_crm_history_dateadded_value AS node_data_field_crm_history_brokerid_field_crm_history_dateadded_value,
node_data_field_crm_history_brokerid.field_crm_history_entrydesc_value AS node_data_field_crm_history_brokerid_field_crm_history_entrydesc_value
FROM node node
LEFT JOIN content_type_crm_history node_data_field_crm_history_brokerid ON node.vid = node_data_field_crm_history_brokerid.vid
WHERE node.type in ('crm_history')
ここでvid
はどういう意味ですか?
実際にこれが必要なのは、次のクエリを使用してcrm_historyに行を挿入する単純なルールを挿入しようとするときです。
$result = db_query("INSERT INTO {content_type_crm_history} (vid, nid, field_crm_history_caseid_value, field_crm_history_brokerid_value, field_crm_history_dateadded_value, field_crm_history_entrydesc_value) VALUES (" . $node->nid . ", " . $node->vid . ", " . $caseid . ", " . $brokerid . ", " . $dateadded . ", '" . t($entrydesc) . "')");
データベーステーブルにはデータが入力されますが、ビューには表示されません。コンテンツ作成ページで追加したときのビューのみが表示されます。
残念ながら、vidには複数の意味があります。これは理想的ではありませんが、問題が発生することはありません(時々穏やかな混乱を除く)。
ノードのコンテキストでは、「バージョンID」を意味します。ノードテーブル内のすべてのノードについて、Drupalは複数のバージョンをnode_revisionsテーブルに保存できます。バージョンIDはnode_revisionsテーブル内の一意の識別子です(これはクエリに表示されるvidです)。 )
分類の文脈では、vidは「語彙ID」を意味します。語彙は、関連する用語の集まりです。すべての語彙には固有のIDがあります。
Viewsモジュールのコンテキストでは、vidは「ビューID」を意味します。
別の注記では、カスタムクエリを使用してデータベースにノードを追加しないでください。より良い方法は、ノードオブジェクトを作成し、drupal node_save()
を使用してデータベースに書き込むことです。
Drupal ノードオブジェクト参照 ページから)、node-> vidは、ノードの現在のバージョンのリビジョンIDです。
ノードのコンテンツは、ノードテーブルに直接格納されるのではなく、node_revisionsテーブルに格納されます。 このページ にテーブル構造の説明があります。
vid
はリビジョンIDです。 Drupalでは、すべてのノードが複数のリビジョンを持つことができます。リビジョンを使用していない場合、nid
(ノードID)はvid
と等しくなります。