Рейтинг:1

Как запросить последнюю дельту?

флаг ai

документация за QueryInterface:: условие объясняет, как сузить условие до определенной дельты запрашиваемого поля. Есть ли способ сказать интерфейсу, чтобы он посмотрел на значение последней дельты поля? Я пытался предоставить -1 для дельты, поскольку этот метод используется многими языками программирования для доступа к элементам массива, считая с конца, но это приводит только к пустым наборам результатов. Придется ли мне прибегнуть либо к созданию фиктивного поля, чтобы сохранить последнее значение для поля отдельно, и написать дополнительный код, чтобы убедиться, что это поле всегда заполняется/обновляется, либо отказаться от интерфейса запроса объекта и использовать SQL прямо вместо этого?

флаг ru
Вы можете попробовать отсортировать по убыванию и ограничить результат до 1
флаг ai
@Hudri Я знаю о применении сортировки к результатам полного запроса. И я знаю об ограничении этих результатов (опять же, для полного запроса). Можете ли вы объяснить, как применять эти методы к отдельным условиям _внутри_ запроса сущности?
флаг ru
Хм, хороший вопрос, ты меня понял. Сортировка и ограничение будут работать с [API базы данных] (https://www.drupal.org/docs/8/api/database-api/dynamic-queries/introduction-to-dynamic-queries), но не с EntityQuery напрямую. Но несколько дней назад был несколько похожий вопрос [вы можете добавить «тег» к запросу сущности] (https://drupal.stackexchange.com/questions/307285/what-method-should-i-use- вместо-drupal-core-entity-query-sql-queryaddexpre) и используйте этот тег для добавления выражений API базы данных в EntityQuery.
флаг ai
Спасибо, @Худри. Я не сомневаюсь, что это сработает. Однако у меня сложилось впечатление, что друпалисты не одобряют использование SQL непосредственно в базовых таблицах базы данных для сущностей на том основании, что нет документированной гарантии того, что соглашения об именах таблиц/столбцов никогда не изменятся, что делает этот подход хрупким. Я склонен думать, что если я собираюсь проигнорировать этот совет, я мог бы просто использовать API базы данных для всего запроса. Я могу делать это во сне, и тогда я получу гораздо больше гибкости и эффективности. За пенни, за фунт, верно?
флаг ru
Ну, точно так же, как API базы данных EntityQuery обрабатывает префиксы имен таблиц, и, насколько мне известно, это единственное, что разрешено изменять между установками или средами. Все остальное было бы критическим изменением, требующим сначала уведомления об устаревании, а затем увеличения номера основной версии. Это цель семантического управления версиями. И если это маловероятное изменение когда-либо произойдет, оно, скорее всего, затормозит и EntityQuery, и API базы данных.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.