Zobacz pole Moduł pozwala wystawiać stoliki boiska w tabelach podstawowych poglądów. Różni się to od Wyświetleń domyślne zachowanie tym, że tabela bazowa jest tabela pole, a nie podmiot, którego dane pole jest następnie ładowane z. Na przykład, wybierając węzeł jako tabelę podstawową, możesz następnie dodać pola, ale podstawową (tabelą podstawową) w zapytaniu jest nadal węzeł, który w zależności od twoich danych może zepsuć funkcje agregujące (inaczej relacja jeden do jednego niektórych pola do węzła).
Pole Widoki umożliwia bezpośredni dostęp do tabel pól, co oznacza, że funkcje agregujące działają poprawnie. Dodatkowo, jeśli potrzebujesz wykonać „ciekawe” połączenia z innymi tabelami pól, możesz je całkowicie kontrolować, wykonując następujące czynności.
/**
* Implements hook_views_data_alter().
*/
function mymodule_views_data_alter(&$data) {
views_field_add_multi_join($data, /* see docs */);
}
Jest to dość prosty w użyciu i umożliwia wykonywanie funkcji agregujących w wielu tabelach pól jednocześnie. Następnie możesz ręcznie wywołać widok $view->execute()
i wyciągnąć wyniki z widoku. Przykłady tego znajdują się w dokumentacji widoków.
Zaletą tego podejścia w porównaniu z EntityFieldQuery jest to, że możesz zarządzać procesem w Widoku (z którego prawie wszyscy już będą korzystać) i pozwolić mu na wykonanie fizycznego zapytania w mniej bezpośredni sposób, co pomaga w podniesieniu możliwego uszkodzenia na drodze. Ponadto wiele razy będziesz chciał wyświetlać takie dane zbiorcze na ekranie administratora, które następnie możesz użyć w widoku, aby zapewnić zarówno wyświetlanie, jak i dostęp do wyników w kodzie do dodatkowych celów.
_field_sql_storage_tablename($field)
i_field_sql_storage_columnname($field_name, $column
), które odpowiadają moim bieżącym potrzebom, ale nie są zrównoważone, więc nadal jestem zainteresowany odpowiedzią na to pytanie, jeśli takie będzie.