web-dev-qa-db-ja.com

ビューに結合する別のデータテーブルを定義する方法(つまり、csvファイルから)

XMLビューから学ぶことで、2つのビュークエリプラグインの作成に成功しました。私のプラグインはYAMLとCSVファイルをクエリします。どちらもそれ自体がベースビュータイプです。

テーブルを結合する方法を学びたいと思います。 (以下は、csv_viewsと呼ばれる最小限のビューモジュールのスケルトンを想定しているため、前述のクエリプラグインクラスを削除しました。)

追加機能なしで照会される修正テーブル(つまり、CSVファイル)を考えました。これをノードテーブルに結合したいとします。たとえば、ノード(ノードタイトル)とCSVファイルの列の両方のタイトルフィールドを使用します。

Mv csv_views.views.incで何を定義する必要がありますか?現時点では、次のものが含まれています。

function csv_views_views_data() {
  $data['csv']['table']['group'] = t('CSV');

  $data['csv']['table']['join'] = array(
    'node' => array(
      'left_table' => 'node',
      'left_field' => 'title',
      'field' => 'title',
    ),
);

  return $data;
}

フィールドハンドラーは必要ですか?

テーブルクエリ実行メソッドはどのクラスで定義されていますか?それを学ぶために調べることができるビューモジュールはありますか?
AFAIK結合するテーブルを提供するすべてのモジュールは、実際のデータベーステーブルを使用します。

Drupal 6を使用します。これは、Drupal XMLビューに必要なバージョンが機能するためですが、知りたいDrupal 7また、ビュー2で解決することもできます。それはまだメインのビューバージョンですよね?

5
groovehunter

ビューはいくつかの賢いことをすることができます。しかし、SQLクエリをCSVファイルに結合することは、それを少し超えるかもしれないと思います。 (誰かが解決策を持っていると私は驚かないでしょう)。

問題は、データエンジン(sql、mongodb、sparql)内でビューを正常に機能させることができます。ただし、操作したいすべてのものが同じエンジン内にあることが条件です。 SQLテーブルをsparqlクエリに結合する場合は、コードで結合を試行する必要があります。 SQLの結果を元に戻し、sparqlで使用したり、その逆を行ったりします。これはスケーラブルなソリューションではありません。数行で機能する場合がありますが、それを超えると、深刻なパフォーマンスバッファにぶつかります。

この場合、csvファイルをmysqlにインポートして、 data モジュールを使用する方が幸運かもしれません。これにより、結合を定義してビューで使用できるようになります。

5
Jeremy French