метод обновления в контроллере adonis js - PullRequest
0 голосов
/ 26 января 2020

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

async update ({ params, request, response }) {
    const product = await Product.find(params.id)

    product.name = request.input('name')
    product.descr = request.input('descr')
    product.qtd = request.input('qtd')
    product.sub_descr = request.input('sub_descr')
    product.price = request.input('price')

    product.save()

    return response.redirect('/')
  }

Этот код создает новый экземпляр, метод product.update() возвращает мне ошибку

1 Ответ

1 голос
/ 26 января 2020

Adonis js lucid поддерживает автоматические c вставки и обновления - то есть интеллектуально обновляет или вставляет запись на основе ввода.

Согласно документам:

Метод сохранения сохраняет экземпляр в базе данных, разумно определяя, создавать ли новую строку или обновлять существующую.

Однако, если вы хотите выполнить обновление / массовое обновление, вы всегда можете создать запрос, как указано здесь .

Но проблема, с которой вы можете столкнуться

Массовые обновления не выполняют перехват модели.

Пример для вставки / обновления:

const User = use('App/Models/User')

const user = new User()
user.username = 'virk'
user.email = 'foo@bar.com'

// Insert
await user.save()

user.age = 22

// Update
await user.save()

Пример массового обновления:

const User = use('App/Models/User')

await User
  .query()
  .where('username', 'virk')
  .update({ role: 'admin' })
...