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

Laravel中Create方法失效问题求助:附store方法代码

排查Laravel中create()方法失效的常见原因

嘿,我来帮你揪出create()方法失效的问题,结合你贴的代码,几个高频踩坑点给你列出来:

  • 验证方法拼写错误
    你代码里写的$this->Validate($request, [...])有问题!Laravel的验证方法是小写开头的validate(),大写V会直接触发方法不存在的错误,导致后续代码根本没机会执行。赶紧改成:

    $this->validate($request, [
        'name' => 'required|min:3|max:20',
        'age' => 'required|integer|between:18,99',
        'height' => 'required|integer|between:120,230',
        'weight' => 'required|integer|between:30,150',
        'region' => 'required|integer',
        'city' => 'required',
        'phone' => 'required|integer'
    ]);
    
  • 模型未配置批量赋值权限
    Laravel的create()方法依赖模型的$fillable属性来允许批量写入数据,如果你的Person模型里没定义这个属性,就算代码执行了,数据也不会写入数据库。打开Person模型文件,加上可填充字段:

    protected $fillable = ['name', 'age', 'height', 'weight', 'region', 'city', 'phone'];
    

    要是图省事(不推荐生产环境这么干),也可以设置protected $guarded = [];,表示允许所有字段批量赋值。

  • 代码拼写失误
    你贴的代码里weight字段写成了weigh...,明显是没写完的语法错误,这会直接导致代码编译失败,create()自然跑不起来。检查完整代码,确保这个字段的键和值都正确:

    'weight' => $request->weight,
    
  • 验证规则的潜在问题

    • phone用integer规则不合理:手机号虽然是数字,但如果带国际区号(比如+86)就会验证失败,而且存为整数会丢失开头的0,建议改成字符串类型,规则换成required|string|digits:11(针对国内手机号);
    • region的integer规则要和数据库字段类型匹配,如果数据库里region是字符串类型,验证会失败,后续代码也不会执行。
  • 验证失败的隐式跳转
    如果验证没通过,Laravel默认会自动重定向回上一页,带着错误信息,但如果你是写API接口,可能看不到这个反馈。可以加个异常捕获,直接打印错误信息排查:

    try {
        $this->validate($request, [...]);
        $person = Person::create([
            'name' => $request->name,
            'age' => $request->age,
            'height' => $request->height,
            'weight' => $request->weight,
            'region' => $request->region,
            'city' => $request->city,
            'phone' => $request->phone
        ]);
        return redirect()->back()->with('success', '创建成功');
    } catch (\Illuminate\Validation\ValidationException $e) {
        dd($e->errors()); // 打印验证错误,快速定位问题
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:04:39