2

我有一个这样的模型:

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在将请求存储到数据库之前,如何更改请求的值?

4

1 回答 1

4

您应该以这种方式使用mutator进行Article模型:

public function setImgProfileAttribute($value)
{
    $this->attributes['img_profile'] = '/private/var/tmp/phpceBMP2/'. $value;
}

但是,您应该考虑是否真的想以这种方式将路径存储在 DB 中。如果你将来想改变它怎么办?您将不得不更新所有记录?

于 2015-07-09T16:05:50.287 回答