You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目中图片名称无法存入数据库的解决方法咨询

解决Laravel中图片名称无法存入数据库的问题

我来帮你搞定这个问题!你现在的代码已经成功把图片保存到了public/images文件夹,但数据库里的image字段没拿到文件名,核心原因是你直接用了$request->all()来创建模型,而这个数组里的image是上传的文件对象,不是你生成的那个$image1文件名。

具体修改方案

你需要手动把处理好的图片文件名添加到要存入数据库的数据里,有两种简单的方式:

方式一:手动构建数据数组

直接把所有字段和处理后的文件名一起传入create方法:

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);

    // 手动构建要存入的数据,替换image字段为处理后的文件名
    Tarif::create([
        'title_uz' => $request->title_uz,
        'desc_uz' => $request->desc_uz,
        'full_desc_uz' => $request->full_desc_uz,
        'company_id' => $request->company_id,
        'order' => $request->order,
        'image' => $image1,
    ]);

    return redirect()->route('tarifs.index')
        ->with('success','Yangi tarif muvoffaqiyatli qo`shildi.');
}

方式二:合并请求数据与图片文件名

先排除请求里原有的image字段,再添加处理后的文件名:

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);

    // 排除原image字段,合并新的image值
    $tarifData = $request->except('image');
    $tarifData['image'] = $image1;

    Tarif::create($tarifData);

    return redirect()->route('tarifs.index')
        ->with('success','Yangi tarif muvoffaqiyatli qo`shildi.');
}

关键检查点

别忘了确认你的Tarif模型里的$fillable属性包含了image字段,否则Laravel的批量赋值会忽略这个字段:

class Tarif extends Model
{
    // 确保image在可填充字段列表里
    protected $fillable = ['title_uz', 'desc_uz', 'full_desc_uz', 'company_id', 'order', 'image'];
}

这样修改后,图片文件名就能正确存入数据库的image字段了,同时图片依然会正常保存到指定文件夹~

内容的提问来源于stack exchange,提问作者Hayrulla Melibayev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 21:03:02