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_nameimg_profile

img_profileデータベースに保存する前にリクエストの値を変更するにはどうすればよいですか?

4

1 に答える 1

4

この方法でモデルにミューテーターを使用する必要があります。Article

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

ただし、この方法で本当にパスを DB に保存するかどうかを検討する必要があります。将来変更したい場合はどうすればよいですか?すべての記録を更新する必要がありますか?

于 2015-07-09T16:05:50.287 に答える