首页 > 解决方案 > 将日期值插入数据库 Laravel

问题描述

我想在数据库中插入一个值的表单上有一个日期字段。我为表单创建了一些错误消息。我正在使用表单请求进行验证逻辑。当我提交表单时,我收到一条关于空日期值的错误消息。我怎么解决这个问题?

谢谢,提前

刀片模板

<form method="POST" action="{{ route('store.education') }}" class="wt-formtheme wt-userform">
    <fieldset>
        <div class="form-group form-group-half">
            <input type="text" name="edu_organisation[]" class="form-control @error('edu_organisation') is-invalid @enderror" id="education_organisation" placeholder="Company Title" data-edu="1"> </div>
        <div class="form-group form-group-half">
            <input type="date" name="edu_start[]" class="form-control @error('edu_start') is-invalid @enderror" id="education_start" placeholder="Starting Date" data-edu="1"> </div>
        <div class="form-group form-group-half">
            <input type="date" name="edu_end[]" class="form-control @error('edu_end') is-invalid @enderror" id="education_end" placeholder="Ending Date *" data-edu="1"> </div>
        <div class="form-group form-group-half">
            <input type="text" name="edu_position[]" class="form-control @error('edu_position') is-invalid @enderror" placeholder="Your Job Title"> </div>
        <div class="form-group">
            <textarea name="edu_description[]" class="form-control @error('edu_description') is-invalid @enderror" placeholder="Your Job Description"></textarea>
        </div>
        <div class="form-group"> <span>* Leave ending date empty if its your current job</span> </div>
    </fieldset>
</form>

        

                                 @error('edu_organisation')
                                             <div class="alert alert-danger alert-dismissible fade show">
                                                  <span> {{ $message }}</span>
                                                  <a href="javascript:void(0)" class="close" data-dismiss="alert" aria-label="Close"><i class="fa fa-close"></i></a>
                                             </div>
                                          @enderror

                                          @error('edu_start')
                                             <div class="alert alert-danger alert-dismissible fade show">
                                                  <span> {{ $message }}</span>
                                                  <a href="javascript:void(0)" class="close" data-dismiss="alert" aria-label="Close"><i class="fa fa-close"></i></a>
                                             </div>
                                          @enderror

                                          @error('edu_end')
                                             <div class="alert alert-danger alert-dismissible fade show">
                                                  <span> {{ $message }}</span>
                                                  <a href="javascript:void(0)" class="close" data-dismiss="alert" aria-label="Close"><i class="fa fa-close"></i></a>
                                             </div>
                                          @enderror

                                          @error('edu_position')
                                             <div class="alert alert-danger alert-dismissible fade show">
                                                  <span> {{ $message }}</span>
                                                  <a href="javascript:void(0)" class="close" data-dismiss="alert" aria-label="Close"><i class="fa fa-close"></i></a>
                                             </div>
                                          @enderror

                                          @error('edu_description')
                                             <div class="alert alert-danger alert-dismissible fade show">
                                                  <span> {{ $message }}</span>
                                                  <a href="javascript:void(0)" class="close" data-dismiss="alert" aria-label="Close"><i class="fa fa-close"></i></a>
                                             </div>
                                          @enderror

控制器

 public function storeEducation(StoreEducationRequest $request)
  {
    $validated = $request->validated();

    for ($i=0; $i <count($validated['edu_organisation']) ; $i++) { 
      Education::updateOrCreate(
        ['profile_key' => Auth::user()->profile->key],[
        'organisation' => $validated['edu_organisation'][$i],
        'start' => $validated['edu_start'][$i],
        'end' => $validated['edu_end'][$i],
        'position' => $validated['edu_position'][$i],
        'description' => $validated['edu_description'][$i]
      ]);
    }
  }

表单请求

class StoreEducationRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'edu_organisation' => ['required','array'],
            'edu_start' => ['required','array','date'],
            'edu_end' => ['required','array','date'],
            'edu_position' => ['required','array'],
            'edu_description' => ['required','array']
        ];
    }


    public function attributes()
    {
        return [
            'edu_organisation' => 'Organisation',
            'edu_start' => 'Date of start',
            'edu_end' => 'Date of end',
            'edu_position' => 'Position',
            'edu_description' => 'Description'
        ];
    }
}

架构

public function up()
    {
        Schema::create('educations', function (Blueprint $table) {
            $table->id();
            $table->string('profile_key');
            $table->string('organisation');
            $table->date('start');
            $table->date('end');
            $table->string('position');
            $table->text('description');

            $table->foreign('profile_key')->references('key')->on('profiles');
        });
    }

标签: phpmysqllaravel

解决方案


在您的模型中,在varEducation中设置日期列:dates

class Education extends Model 
{
    protected $dates = ['start', 'end']
}

在这种情况下,laravel 将支持您的日期。

** 如果仍然无法正常工作,请在此处发布您在服务器中获得的输入以及出现的错误。


推荐阅读