【问题标题】:Why my data is not storing in database in laravel?为什么我的数据没有存储在 laravel 的数据库中?
【发布时间】:2021-08-14 12:22:00
【问题描述】:

我的 3 个输入 addressnumbername_of_firm 显示为空值,但我在表单中填写了该值。 这是我的表格

<form id="myForm" method="post" action="{{ route('dealer.store') }}">
                        @csrf
                        <div class="user-box">
                            <input type="text" name="name" required="">
                            <label>Name</label>
                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="name_of_firm" required="">
                            <label>Name Of Firm</label>
                            @error('name_of_firm')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="number" required="">
                            <label>Number</label>
                            @error('number')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="text" name="address" required="">
                            <label>Address</label>
                            @error('address')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="email" name="email" required="">
                            <label>Email</label>
                            @error('email')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="user-box">
                            <input type="password" name="password" required="">
                            <label>Password</label>
                            @error('password')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>

                        <button class="a" id="a" value="submit" name="submit">Submit</button>

                    </form>

这是我的控制器。我的控制器的名称是 DealerController,我将数据存储在用户表中

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'email' => 'required',
        'password' => 'required',
        'name_of_firm' => 'required',
        'address' => 'required',
        'number' => 'required',
    ]);

    $user = User::create([
        'name' => $request->input('name'),
        'email' => $request->input('email'),
        'password' => Hash::make($request->input('password')),
        'name_of_firm' => $request->input('name_of_firm'),
        'address' => $request->input('address'),
        'number' => $request->input('number'),
    ]);

    return redirect()->route('dealer.index')->withSuccess('done');
}

这是我的用户模型。只有 3 个字段可以填写。

protected $fillable = [
    'name',
    'email',
    'password',
];

这是数据库的图片。 enter image description here

【问题讨论】:

    标签: laravel laravel-8


    【解决方案1】:

    这是因为Laravel mass-assignment,您应该在$fillable 数组中添加您想要填写的每个字段。

    如下更改您的可填充数组:

    protected $fillable = [
            'name',
            'email',
            'password',
            'name_of_firm',
            'address',
            'number'
    ];
    

    【讨论】:

      【解决方案2】:

      将您的 $fillable 替换为此

      protected $guarded = [
          'id',
      ];
      

      解决问题

      【讨论】:

      • 这可行,但是,我倾向于列出可填充的确切列/属性
      • @elchroy 是的,但这取决于你的喜好,我喜欢这种方式
      【解决方案3】:

      如果您使用$fillable,请尝试添加其他字段,但如果您不想添加其他字段,请尝试使用$guarded

      $fillable

      protected $fillabel = [
          'name',
          'email',
          'password',
          'name_of_firm',
          'address',
          'number'
      ];
      

      $守卫

      protected $guarded = [];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        • 2019-11-06
        • 2017-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多