hook_views_data_alter()
に実装されているこれら2つの違いは何ですか?なぜもう一方を選ぶのですか?
mytable1
テーブルとrelationship
テーブルの間にusers
を設定するときに、Views UIにリレーションシップセクションの下にmytable1.uid
フィールドを追加するオプションが表示されたことに気付きました。そうすれば、クエリにusers
フィールドを追加できます。
テーブルにjoin
を実装すると、views-UIで何に注意する必要がありますか?私の実装は次のとおりです:
mymodule_views_data_alter(&$data){
$data['mytable1']['table']['join']['users'] = array(
'left_field' => 'uid',
'field' => 'uid',
);
}
私は関係設定なしでこれを行ったので、それぞれの排他的な効果を観察できます(join
vs relationship
)
私の経験では、クエリの実行時に常に結合が行われます。つまり、ビューに関係を追加しなくても、結合されたテーブルのフィールドを利用できます。結合が使用されている場合、そのテーブルに関連付けられているビュー情報が取り込まれないと思います。たとえば、そのテーブルに関連付けられている関係を追加することはできません。
関係は、ユーザーがビューで行うことができる選択です。 (ビューの右側のセクションから)関係を追加することを選択できます。関係が追加されると、そのエンティティに関連付けられているビュー情報も取り込まれます。たとえば、そのテーブルにリンクされている関係を追加できます。