Управление данными запроса с помощью рюкзака 4.1 - PullRequest
1 голос
/ 07 мая 2020

Я хотел бы изменить данные перед сохранением. У меня есть дата, где мне нужны не секунды, а только минуты, и я хочу, чтобы секунды всегда были равны 00. Я пробовал метод Laravel prepareForValidation() в своем классе запроса, но оказалось, что он не влияет на значение, хранящееся в базе данных. Я также пробовал modifyField() рюкзака, но не смог найти способ изменить значение перед сохранением или обновлением.

Как лучше всего это сделать? Использование Laravel7 и Backpack 4.1

1 Ответ

2 голосов
/ 13 мая 2020

Я не знаю, есть ли специальный c рюкзак для этого, но вы можете использовать мутатор в своей модели, чтобы изменить значение до того, как оно будет сохранено в базе данных.

В вашем случае, если ваше имя поля «date_time», вы можете сделать что-то вроде:

class MyModel extends Model {

  setDateTimeAttribute ($value) {

    $value = Carbon::parse($value)->second(0);

    $this->attributes['date_time'] = $value;  
  }
}

Это имеет то преимущество, что мутация будет происходить каждый раз, когда ваш атрибут date_time обновляется - независимо от того, вы обновляете его через Backpack Crud или каким-либо другим способом.

Ссылки :

...