更改图像名称并保存到DB Laravel



Hi我无法将图像名称存储到Laravel项目中的数据库中。如何解决这个问题?

这是控制器的代码

class TarifController extends Controller
{
public function store(Request $request)
{
$request->validate([
'title_uz' => 'required',
'desc_uz' => 'required',
'full_desc_uz' => 'required',
'company_id' => 'required',
'order' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,svg|max:2048',
]);
$image1 = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $image1);
Tarif::create($request->all());
return redirect()->route('tarifs.index')
->with('success','Yangi tarif muvoffaqiyatli qo`shildi.');
}
}

这是视图中的代码

<form role="form" action="{{ route('tarifs.store') }}" method="post" enctype="multipart/form-data">
@csrf
<div> .. another fields ..  </div>
<div class="col-5">
<label for="image">Surat</label>
<input type="file" class="form-control" name="image" id="image" required>
</div>
<div> .. another fields ..  </div>
<div class="card-footer">
<a class="btn btn-info" href="{{ route('tarifs.index') }}">Qaytish</a>
<button type="submit" class="btn btn-success">Saqlash</button>
</div>
</form>

它将图像保存到public/images文件夹,但没有将文件名或路径保存到DB。数据库中的字段名称为"image"。

如果您需要将新值合并到请求对象中,以下代码就可以完成任务:

$request->merge(['image' => 'avatar.png']);

或者,你可以这样更改你的代码:

$image1 = time().'.'.$request->image->extension();
$request->image->move(public_path('images'), $image1);
$input = $request->all();
$input['image'] = $image1;
Tarif::create($input);

最新更新