Как добавить столбец в drupal view (Format:Table), которого нет в БД?

Главные вкладки

Аватар пользователя dadexe360 dadexe360 24 марта 2017 в 20:05

view (Format:Table) выводит 2 числовых столбца с бд. Как сделать третий, в котором будет сумма двух предыдущих? Еще нужно чтобы это столбец мог сортироваться и к нему можно было добавить фильтр.
UPD
Третьего столбца нет в бд и еще он должен меняться в зависимости от настроек каждого пользователя. Именно поэтому я его в бд и не записывал

Лучший ответ

Комментарии

Аватар пользователя fairrandir fairrandir 24 марта 2017 в 20:14
1

Ну, по-первому вопросу - во views "искапопки" есть что-то типа computed field
По-второму - вообще говоря, через свой модуль и хуки views api можно сообщить вьюхам о своих полях, которые можете в своем коде считать как угодно

Аватар пользователя dadexe360 dadexe360 24 марта 2017 в 22:57

Этого своего поля вообще нет. Оно должно считаться как сума двух предыдущих разделить на число которое у каждого пользователя свое. Поэтому это поле я и не записывал в бд

Аватар пользователя bumble bumble 24 марта 2017 в 20:19
1

dadexe360 wrote:

Как сделать третий, в котором будет сумма двух предыдущих?

Поле "Глобальный: Математическое выражение ".

dadexe360 wrote:

Еще нужно чтобы это столбец мог сортироваться и к нему можно было добавить фильтр.

Можно провернуть подобное Computed Field'ом, например.
Суть в том, что VIews - это GUI для запросов в БД. И если в БД значения нет - соответственно и фильтровать/сортировать нечего.

UPD - как всегда, вторым "пришел" Smile

Аватар пользователя dadexe360 dadexe360 24 марта 2017 в 22:50

А можно как то с помощью hook_views_query_alter добавить поле типа select field1+field2 as field3. И тогда уже можно будет field3 сортировать

Аватар пользователя gun_dose gun_dose 24 марта 2017 в 22:52
1

Можно ещё в шаблоне посчитать. Не совсем друпал-вэй, но по потреблению ресурсов выгоднее всего.

Упд: невнимательно прочитал. Первый коммент оптимальный способ.

Аватар пользователя jsv jsv 26 марта 2017 в 11:39

Если у вас всего три поля - можно и ручками сделать страничку вывода, программинга там немного