Как настроить поле модели перед сохранением в базе данных
У меня есть такая модель:
class Article extends Model {
protected $fillable = [
'title',
'body',
'img_profile', // store name of image
];
}
И контроллер, как это:
public function store(ArticleRequest $request){
$article = Auth::user()->articles()->create($request->all());
return redirect('articles');
}
И такая форма:
{!! Form::model($article = new \App\Article,['url' => 'articles','files' => true ]) !!}
{!! Form::text('title', null ) !!}
{!! Form::textarea('body', null) !!}
{!! Form::file ('img_profile', '') !!}
{!! Form::submit('Submit') !!}
{!! Form::close() !!}
Когда я отправляю форму, img_profile
поле хранится в кэше по умолчанию файл, который /private/var/tmp/phpceBMP2
.Но я просто хочу обновить file_name
в img_profile
,
Как я могу изменить значение img_profile
запрос перед сохранением в базе данных?
1 ответ
Вы должны использовать мутатор для Article
смоделируйте таким образом:
public function setImgProfileAttribute($value)
{
$this->attributes['img_profile'] = '/private/var/tmp/phpceBMP2/'. $value;
}
Однако вы должны подумать, действительно ли вы хотите сохранить путь в БД таким способом. Что если вы захотите изменить это в будущем? Вам придется обновить все записи?