Модуль поля Перегляд дозволяє виставляти таблиці полів як базові таблиці переглядам. Це відрізняється від Перегляди поведінку по замовчуванням в тому , що базова таблиця є таблицею поле , а не об'єкт , до якого дані поля потім завантажуються з. Наприклад, вибираючи вузол як базову таблицю, ви можете потім додавати поля, але основним (базовою таблицею) у запиті все ще є вузол, який залежно від ваших даних може виконувати сукупність функцій (так, як співвідношення "багато в одному" деяких поля до вузла).
Поле Views дозволяє вам отримати прямий доступ до таблиць полів, а це означає, що агреговані функції працюють належним чином. Крім того, якщо вам потрібно зробити "цікаві" приєднання до інших польових таблиць, ви можете повністю керувати ними, використовуючи наступне.
/**
* Implements hook_views_data_alter().
*/
function mymodule_views_data_alter(&$data) {
views_field_add_multi_join($data, /* see docs */);
}
Це досить просто у використанні і дозволяє вам виконувати агреговані функції в декількох польових таблицях одночасно. Потім можна вручну викликати вигляд $view->execute()
і витягнути результати з подання. Приклади цього є в документації щодо перегляду.
Переваги такого підходу над EntityFieldQuery полягають у тому, що ви можете керувати процесом у Views (який майже всі вже використовуватимуть) та дозволяти йому виконувати побудову фізичного запиту менш прямим способом, що допомагає підвищити можливий злом в дорозі. Крім того, багато разів вам потрібно буде відображати такі сукупні дані на екрані адміністратора, який ви можете потім використовувати для подання як відображення, так і доступу до результатів у коді для додаткових цілей.
_field_sql_storage_tablename($field)
і_field_sql_storage_columnname($field_name, $column
), які відповідають моїм поточним потребам, але це не є стійким, тому все ж зацікавлений у відповіді на це питання, чи варто прийти.