Модуль Simple Math Field работает по разному на разных сайтах

20 февраля 2019 в 3:48
Аватар пользователя Gnom7 Gnom7 0 27 Решено

Данный модуль мне нужен для вычисления разности между датами во Views.
На тестовом сайте с тестовыми данными модуль работает хорошо, а на рабочем выводит некорректные значения, хотя настройки полей идентичны на обоих сайтах. Подскажите, в чем может быть причина?

Комментарии

Если Вы используете даты то надо понимать что например на сервере может быть другой часовой пояс и при вычислении разницы на датах можно получить разные значения например при использовании UNIX_TIMESTAMP
см. http://qaru.site/questions/16013257/mysql-seconds-difference-unexpected-...

20 февраля 2019 в 7:35

Выяснилось, что если оперировать датами "создание" и "изменение", то проблем не возникает. А если оперировать другими датами сущности, то появляется число вроде этого "1546323030". Может быть дело в типе данных MySQL?

Подскажите, как включить отображение SQL запроса в админке Views? в phpmyadmin не могу найти таблицы с данными представления.

20 февраля 2019 в 9:32

Кстати это
Конвертивание эпохи Unix в человекопонятную дату(human readable date)
1546323030
GMT: Tue, 01 Jan 2019 06:10:30 GMT
Ваша временная зона: 01.01.2019, 9:10:30

20 февраля 2019 в 9:47

появляется число вроде этого "1546323030"

Если подобное число в секундах появляется при вычитании дат, то похоже что одна из ваших дат не определена, и вы по сути вычисляете разницу между датой в 2019 году и 1 января 1970 года.

20 февраля 2019 в 10:34

Оказалось, что модуль ECK, при помощи которого я сделал сущности, создает в MySQL столбцы с типом int(11) для полей "дата создания" и "дата редактирования" сущности, а для остальных столбцов содержащих дату тип varchar(20) хранящих дату в формате "2019-02-05".
Получается, что проще научится программно создавать сущности, чем зацикливаться на решение проблем связанных с конвертированием дат.

21 февраля 2019 в 3:20

Пытаюсь сделать сайт для облегчения своей рутинной работы на предприятии. Для этого мне нужен инструмент облегчающий ввод, вывод, формирование и аналитику данных из MySQL. Данные имеют табличный вид, скриншот прилагаю.

У меня есть опыт работы с hook_menu() + theme() https://powerliftingrating.ru/athlete/162 , но спустя 3 года вялотекущей разработки, понял что иду не той дорогой... Поэтому решил познакомится с сущностями.

Я догадываюсь, что при помощи добавления полей в типы материалов можно реализовать данную задачу, однако не стал в это вникать, так как во всех статьях что мне попадались описывалось процедура создания сущностей.

Буду рад любым советам от форумчан!

21 февраля 2019 в 11:13

Я догадываюсь, что при помощи добавления полей в типы материалов можно реализовать данную задачу

Мне почему-то тоже так кажется, хотя не владея деталями Вашей "рутинной работы" невозможно сказать наверняка.

во всех статьях что мне попадались описывалось процедура создания сущностей

А при каких обстоятельствах эти статьи Вам попадались? Мне например ни одной такой не попалось, возможно потому что я их специально никогда не искал. Wink
Я бы попробовал сделать на обычных нодах и типах материалов. Если есть сомнения в чем-то конкретном - напишите, разберемся.

21 февраля 2019 в 11:30

Мне почему-то тоже так кажется, хотя не владея деталями Вашей "рутинной работы" невозможно сказать наверняка.

Работать с node оказалось значительнее приятней.

А при каких обстоятельствах эти статьи Вам попадались?

Поисковые запросы не помню, помню что искал информацию на тему как сделать кастомный модуль сделанный на hook_menu() доступным для Views и /admin/content.

22 февраля 2019 в 3:36

искал информацию на тему как сделать кастомный модуль сделанный на hook_menu() доступным для Views и /admin/content

Мне кажется, Вы как-то методологически неправильно Друпал изучаете. Вместо того, чтобы прочесть какой-нибудь самый простой туториал где с самого нуля объясняются самые базовые вещи, или даже просто полазить по административному меню и посмотреть что там можно сделать, Вы начитались статей на очень сложные темы, которые не каждому среднему Друпалеру нужны и интересны, не то что начинающему. Я, например, только от Вас узнал про модуль ECK, кастомные сущности и про "кастомный модуль сделанный на hook_menu()", что мне совершенно не мешало писать собственные модули безо всяких hook_menu, решающие иногда довольно непростые задачи. Попробуйте сделать шаг назад и методично освоить азы.

22 февраля 2019 в 9:04

Если есть сомнения в чем-то конкретном - напишите, разберемся.

Сомнений не осталось, жалею что сразу не познакомился с node.
Однако в node проявилась та же проблема что и при создании entity через ECK

создает в MySQL столбцы с типом int(11) для полей "дата создания" и "дата редактирования" сущности, а для остальных столбцов содержащих дату тип varchar(20) хранящих дату в формате "2019-02-05".

Как сделать чтобы дата из поля типа "дата" записывалась в MySQL в формате UNIX?
Мне в голову приходит, что на стороне MySQL нужно сделать триггер который будет конвертировать дату. Но опасаюсь, что в будущем это может вызвать проблемы... да и с триггерами знаком заочно без практического опыта.

22 февраля 2019 в 3:59

В общем, вот что нужно сделать:

1. Выкинуть модуль Simple Math Field за ненадобностью.

2. Вывести оба поля дат в нужное View форматтером Custom и форматом U.

3. Первое поле скрыть.

4. Второе переписать через rewrite results следующим текстом:
{{ (((field_date2|trim)-(field_date1|trim))/(60*60*24))|round }}
Если оба поля чисто даты без времени, то round можно выкинуть.

22 февраля 2019 в 8:54

А я и не предлагаю трогать шаблоны, этот текст вводится прямо в настройки поля Views. Не все знают, что Rewrite results и Global: Custom text поддерживают практически полный синтаксис twig.

22 февраля 2019 в 9:07

Я застрял на 2-м шаге.
Речь идет о модуле Custom Formatters? Если да, то после установки у меня не появилось никаких дополнительных настроек ни во Views, ни в настройках типа материла.

22 февраля 2019 в 10:35

Никаких дополнительных модулей не надо, всё в ядре:


PS Заменил скриншот на русский. Никогда не переключаю админку на русский и не понимаю как другие могут без слёз смотреть на "Cредство форматирования: Собственная" и прочую подобную галиматью и что-то даже понимать Wink

PPS Вернул английский скриншот и оставил оба, чтобы было понятно о чём я Wink

22 февраля 2019 в 10:53

Тем что не могу вычислить во Views с помощью модуля Simple Math Field разность дат. Модуль Simple Math Field не может производить арифметические операция с датами формата ISO.

Почему-то Drupal хранит дату создания node в формате UNIX а дату введенную в пользовательское поле в формате ISO.

22 февраля 2019 в 7:08

Вам надо работать с датами в одном формате и лучше в ISO, если Simple Math Field этого не умеет, поищите другой модуль или напишите свой конроллер поля для views

22 февраля 2019 в 7:13