【问题标题】:production.ERROR: InvalidArgumentException: Data missing in Laravelproduction.ERROR:InvalidArgumentException:Laravel 中缺少数据
【发布时间】:2021-02-13 00:58:42
【问题描述】:

我正在使用 Laravel-5.8 开发一个项目。我的模型中有这个:

型号:

protected $fillable = [
              'id',
              'email',
              'hire_date',
              'first_name',
              'other_name',
              'last_name',
              'date_of_birth',
          ];

protected $dates = [
    'date_of_birth',
    'hire_date',
];

public function setDateOfBirthAttribute($value)
{
    $this->attributes['date_of_birth'] = Carbon::createFromFormat('d-m-Y', $value);
}

public function setHireDateAttribute($value)
{
    $this->attributes['hire_date'] = Carbon::createFromFormat('d-m-Y', $value);
}

那么这是我的控制器。

控制器:

$arr = [
   'first_name'                => $request->first_name,
   'last_name'                 => $request->last_name,
   'hire_date'                 => $request->hire_date,
   'date_of_birth'             => $request->date_of_birth,
   'other_name'                => $request->other_name,
];

 $employee = HrEmployee::create($arr);

我使用 JQuery 日期选择器:

< script type = "text/javascript" >
  $(function() {
    $('.birthDate').datepicker({
      dateFormat: 'dd-mm-yy',
      changeMonth: true,
      changeYear: true,
      maxDate: -1,
      showAnim: 'slideDown',
      duration: 'fast',

    });

  }); <
/script>
<div class="col-12 col-sm-4">
  <div class="form-group">
    <label class="control-label"> Date of Birth:</label>
    <div class="input-group">
      <div class="input-group-prepend">
        <span class="input-group-text"><i class="far fa-calendar-alt"></i></span>
      </div>
      <input type="text" placeholder="dd/mm/yyyy" readonly autocomplete="off" name="date_of_birth" value="{{ old(" date_of_birth} ") }}" class="form-control birthDate">
    </div>
  </div>
  <!-- /.form-group -->
</div>

当我提交表单时,我收到了这个错误:

[2021-02-12 12:50:07] production.ERROR: InvalidArgumentException: Data missing in /var/www/html/peopleedgeapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php:623
Stack trace:
#0 /var/www/html/myapp/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php(645): Carbon\Carbon::rawCreateFromFormat('d-m-Y', NULL, NULL)
#1 /var/www/html/myapp/app/Models/Hr/HrEmployee.php(156): Carbon\Carbon::createFromFormat('d-m-Y', NULL)
#2 /var/www/html/myapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(615): App\Models\Hr\HrEmployee->setDateOfBirthAttribute(NULL)
#3 /var/www/html/myapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php(569): Illuminate\Database\Eloquent\Model->setMutatedAttributeValue('date_of_birth', NULL)
#4 /var/www/html/myapp/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(329): Illuminate\Database\Eloquent\Model->setAttribute('date_of_birth', NULL)

我哪里弄错了? hire_date 也会出现同样的错误。

我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: laravel


    【解决方案1】:

    很难说到底出了什么问题,但可以肯定这里有问题:

    value="{{ old(" date_of_birth} ") }}"
    

    应该是这样的:

    value="{{ old('date_of_birth') }}"
    

    【讨论】:

      【解决方案2】:

      首先,设置属性方法不用于受保护的字段。 他们的目的完全不同。

      其次,根据您的错误日志,不知何故,您的设置器是通过 NULL 传递而不是参数触发的,其中需要参数,这也是错误的。

      所以我认为你的二传手在哪里触发了这个问题。

      【讨论】:

        猜你喜欢
        • 2012-11-25
        • 2014-03-14
        • 2020-06-08
        • 2020-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        相关资源
        最近更新 更多