web-dev-qa-db-ja.com

hook_views_data_alter()のJOINとRELATIONSHIPの違いは何ですか

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

5
okey_on

私の経験では、クエリの実行時に常に結合が行われます。つまり、ビューに関係を追加しなくても、結合されたテーブルのフィールドを利用できます。結合が使用されている場合、そのテーブルに関連付けられているビュー情報が取り込まれないと思います。たとえば、そのテーブルに関連付けられている関係を追加することはできません。

関係は、ユーザーがビューで行うことができる選択です。 (ビューの右側のセクションから)関係を追加することを選択できます。関係が追加されると、そのエンティティに関連付けられているビュー情報も取り込まれます。たとえば、そのテーブルにリンクされている関係を追加できます。

1
drone.ah