Adonis Lucid ORM: как изменить дату и время только на дату, а затем использовать .distinct () - PullRequest
0 голосов
/ 17 июня 2020

У меня есть таблица с именем Orders

Вот пример значений этой таблицы:

[
  {
     id: 1,
     delivery_date: 2020-06-01 00:00:00,
     quantity: 2
  },
  {
     id: 2,
     delivery_date: 2020-06-01 01:00:00,
     quantity: 2
  },
]

Теперь я запросил это

...
await Order
      .query()
      .select('delivery_date')
      .distinct('delivery_date')
      .fetch()

.distinct () не сработал, потому что время не то же самое, поэтому мой вопрос: как использовать различный для работы, даже если время не то же самое, а дата такая же? и мне также нужно вернуть только дату, без времени

1 Ответ

0 голосов
/ 19 июня 2020

Так что я просто разделил дату и время. В соответствии с требованиями проекта, я думаю, что это было лучшее решение для меня, не знаю почему, но Адонис все еще добавлял время на моем свидании, я думаю, что это был момент под капотом, поэтому чтобы решить эту проблему;

Вы должны сообщить Адонису, что ваш столбец является датой, сначала добавив это в свою модель, добавьте имя столбца внутри этого массива:

static get dates () {
    return super.dates.concat(['delivery_date'])
}

После этого нам нужно отформатировать этот столбец при отображении данных с помощью используя castDate

static castDates(field, value) {
    if (field === 'delivery_date') {
      return value.format('YYYY-MM-DD')
    }

    return super.formatDates(field, value)
}

Обратите внимание, что вам нужно позвонить .fetch(), чтобы это сработало

Все это указано в документации: https://adonisjs.com/docs/4.1/lucid#_dates

...