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で解決することもできます。それはまだメインのビューバージョンですよね?
ビューはいくつかの賢いことをすることができます。しかし、SQLクエリをCSVファイルに結合することは、それを少し超えるかもしれないと思います。 (誰かが解決策を持っていると私は驚かないでしょう)。
問題は、データエンジン(sql、mongodb、sparql)内でビューを正常に機能させることができます。ただし、操作したいすべてのものが同じエンジン内にあることが条件です。 SQLテーブルをsparqlクエリに結合する場合は、コードで結合を試行する必要があります。 SQLの結果を元に戻し、sparqlで使用したり、その逆を行ったりします。これはスケーラブルなソリューションではありません。数行で機能する場合がありますが、それを超えると、深刻なパフォーマンスバッファにぶつかります。
この場合、csvファイルをmysqlにインポートして、 data モジュールを使用する方が幸運かもしれません。これにより、結合を定義してビューで使用できるようになります。