首页 > 解决方案 > Adonis Lucid ORM:如何将日期时间更改为仅日期,然后使用 .distinct()

问题描述

我有一张名为 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() 不起作用,因为时间不一样,所以我的问题是,即使时间不一样且日期相同,我如何使用 distinct 来工作?我也只需要返回日期,没有时间

标签: node.jspostgresqlknex.jsadonis.js

解决方案


所以我所做的只是将日期和时间分开。根据项目要求,我认为这对我来说是最好的解决方案,不知道为什么,但阿多尼斯仍在增加我约会的时间,我认为这是幕后的时刻,所以要解决这个问题;

你必须让 Adonis 知道你的列是一个日期,首先在你的模型上添加这个,在该数组中添加你的列名:

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


推荐阅读