【问题标题】:Laravel inserting "null" into database from form input.Laravel 从表单输入将“null”插入数据库。
【发布时间】:2016-11-13 23:57:55
【问题描述】:

这是我遇到的一个奇怪问题。我有一个包含 First、Last、Title、Email 和 Phone 的表单,它将这些数据和输入输入到我在数据库中设置的 ContactPerson 表中。

当我填写表格并点击提交时,只有标题、电子邮件和电话号码被正确插入到数据库中。名字和姓氏作为 NULL 插入。

这是我使用 PHPstorm 和 Laravel 2.5.3 的一些代码

我的创建新联系人视图:

<h1 style="text-align:center;">Add A New Contact Person</h1>

    <hr/>

    {!! Form::open(['url' => '/create']) !!}

    <span style="text-align:center;align-content:right;display:block; margin-right:auto;margin-left:auto;">

        <div class="form">
            {!! Form::label('first', 'First Name: ') !!}
            {!! Form::text('First', null, ['class' => 'form']) !!}
        </div>

        <div class="form">
            {!! Form::label('last', 'Last Name: ') !!}
            {!! Form::text('Last', null, ['class' => 'form']) !!}
        </div>

        <div class="form">
            {!! Form::label('title', 'Title: ') !!}
            {!! Form::text('Title', null, ['class' => 'form']) !!}
        </div>

        <div class="form">
            {!! Form::label('email', 'Email: ') !!}
            {!! Form::text('Email', null, ['class' => 'form']) !!}
        </div>

        <div class="form">
            {!! Form::label('phone', 'Phone: ') !!}
            {!! Form::text('Phone', null, ['class' => 'form']) !!}
        </div>

        {!! Form::submit('Submit', ['class' => 'btn btn-primary form']) !!}

    </span>
    {!! Form::close() !!}

这是我创建的名为 ResourceController 的控制器:

class ResourceController extends Controller
{
    public function resource()
    {
        $contacts = ContactPerson::all();

        return view('pages.resource', compact('contacts'));     
    }

    public function create()
    {
        return view('pages.create');
    }

    public function store(Requests\CreateNewContactRequest $request)
    {
        ContactPerson::create($request->all());

        return redirect('resource');
    }
}

这是我在 CreateNewContactRequest 类中为表单设置的验证:

public function rules()
{
    return [
        'First' => 'required|min:2',
        'Last' => 'required|min:1',
        'Title' => 'required|min:2',
        'Email' => 'required|Email|unique:users',
        'Phone' => 'required|numeric|min:9'
    ];
}

这是我填写/提交表单时的样子。

点击提交后,它重定向到数据库转储:

插入后的数据库视图:

【问题讨论】:

  • 检查字段名称是否与您的架构匹配,以及可填充变量是否具有所有这些字段,以便他们可以添加到。

标签: php mysql laravel null


【解决方案1】:

查看您的转储详细信息,您的字段名称需要与您的表单名称匹配,反之亦然,因此您的表单名称需要更改为:

   <div class="form">
        {!! Form::label('first', 'First Name: ') !!}
        {!! Form::text('First_Name', null, ['class' => 'form']) !!}
    </div>

    <div class="form">
        {!! Form::label('last', 'Last Name: ') !!}
        {!! Form::text('Last_Name', null, ['class' => 'form']) !!}
    </div>

EG 对于字段名称First_Name,您的输入需要命名为相同的name="First_Name"

还要确保您可填写的详细信息也正确

 protected $fillable = ['First_Name','Last_Name','Title','Email','Phone'];

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    相关资源
    最近更新 更多