Skip to content

Instantly share code, notes, and snippets.

@vinicioslc
Last active February 6, 2021 19:18
Show Gist options
  • Save vinicioslc/5f250440a8b91a2f03ff92aee916e099 to your computer and use it in GitHub Desktop.
Save vinicioslc/5f250440a8b91a2f03ff92aee916e099 to your computer and use it in GitHub Desktop.
Cheatsheet created in free time for adonisjs migrations procedures.

AdonisJS Migration Cheatsheet

Remove Foreign Key

down() {
    this.table('inbox_messages', table => {
      // reverse alternations
      table.dropForeign('created_by')
      table.dropColumn('created_by')
    })
}

Change .onupdate trigger in existing foreign key

class LessonQuestionsLessonIdForeignSchema extends Schema {
  up() {
    this.alter('lesson_questions', (table) => {
      // drop existing foreign relationship on column 'lession_id'
      table.dropForeign('lesson_id')

      // alter table
      table
        .integer('lesson_id')
        .unsigned()
        .notNullable()
        .references('id')
        .inTable('lessons')
        .onUpdate('CASCADE')
        .onDelete('SET NULL')
        .alter()
      
    })
  }
}

Tip

Regex g flag create global state that returns true and false between exec and test calls.

Query relationship only when has values

queryReports
    .with('meterSerial', builder => {
      builder.where('serial_number', meterSerialNumber)
    })
    .whereHas('meterSerial', builder => {
      builder.where('serial_number', meterSerialNumber)
    })
    

Query pivot table model columns

    return await noteItem
      .meterSerials()
      .with('tableReports', builder => {
        builder.where('fiscal_note_item_id', params.noteItemId).withPivot(['approved'])
      })
      .fetch()

Hiding fields in adonisjs query

builder.setVisible(['id', 'approved', 'meter_serial_id', 'table_report_id'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment