Адонис Js - Как приравнять мое поле даты к моей дате из базы данных - PullRequest
0 голосов
/ 10 июля 2020

Я создал представление с вводом даты, чтобы запросить регистр по полю created_at. Мой поиск ввода даты для? Date = 2020-07-10, а моя база данных сохраняет как Data: Fri Jul 10 2020 08:41:12 GMT-0300 (GMT-03: 00). Таким образом, мой поиск всегда терпит неудачу и ничего не находит

Как сопоставить поле даты с моей датой из базы данных?

Мое представление

<form action="/buscarpordata" method="GET">
    <h1 class="title is-4 column is-4 is-offset-4">Buscar Nota por Data</h1>
  <div class="field is-grouped column is-4 is-offset-4">
    
<input type="date" name="data" required>
  
    <br><div  style="margin-bottom: 20px;">
    <p class="control">
        <input type="submit" class="button is-primary is-medium is-6" value="Buscar">
    </p>
    </div>
</div>
</form>

Моя миграция

'use strict'

/** @type {import('@adonisjs/lucid/src/Schema')} */
const Schema = use('Schema')

class NotaSchema extends Schema {
  up () {
    this.create('notas', (table) => {
      table.increments()
      table.string('numero')
      //FORNECEDOR FK
      table.integer('id_fornecedor_fk')
      .unsigned()
      .references('id')
      .inTable('fornecedors')
      .onUpdate('CASCADE')
      .onDelete('CASCADE')
      //USUARIO FK
      table.integer('id_usuario_fk')
            .unsigned()
            .references('id')
            .inTable('users')
            .onUpdate('CASCADE')
            .onDelete('CASCADE')
   
      table.timestamps()
    })
  }

  down () {
    this.drop('notas')
  }
}

module.exports = NotaSchema

Моя модель

class Nota extends Model {

    usuario () {
        return this.belongsTo('App/Models/User')
    }

    fornecedor () {
        return this.belongsTo('App/Models/Fornecedor')
    }
}

Мой контроллер (для добавления регистра)

const nota = new Nota();

nota.numero = request.input('numero')
nota.id_fornecedor_fk= request.input('fornecedor')
nota.id_usuario_fk = auth.user.id

try {

await nota.save()
return response.redirect('/notas')
}

catch(err) {
  console.log(err)
}

Мой SearchController для выполнения запроса

async searchpordata({request, response, session, view}) {
let query2 = request.input('data')
const notas = await Database
.select('notas.id', 'numero', 'notas.created_at', 'fornecedors.nome', 'fornecedors.cnpj', 'username')
.from('notas')
.where('notas.created_at', query2)
.join('fornecedors', 'fornecedors.id', 'id_fornecedor_fk')
.join('users', 'users.id', 'id_usuario_fk').first()

if(notas)
{
  console.log(notas)
return view.render('resultado_notapordata',{
  notas: notas,
  
  })     
}

else {
return view.render('resultado_buscanota_erro')
}  
   
}

МОЙ маршрут, когда Я пытаюсь запросить

http://127.0.0.1:3333/buscarpordata?data=2020-07-11

Так что не могу найти ни одного регистра

1 Ответ

0 голосов
/ 10 июля 2020

Во-первых, каково определение столбца created_at? Другими словами, какой тип сохраняется как?

Во-вторых, ваша проблема, вероятно, больше связана со сравнением даты с меткой времени, чем с одним из формата:

select '2020-07-10'::timestamp;
      timestamp      
---------------------
 07/10/2020 00:00:00

 select '2020-07-10'::date = 'Fri Jul 10 2020 08:41:12-0300'::timestamp;
 ?column? 
----------
 f

--When you do the above the date gets changed to timestamp form to compare 
--against the timestamp value.

select 'Fri Jul 10 2020 08:41:12-0300'::date;
 date    
------------
 07/10/2020

select '2020-07-10'::date = 'Fri Jul 10 2020 08:41:12-0300'::date;
 ?column? 
----------
 t
(1 row)

--Now they are both being compared as dates.

...