函数create()插入一个日期

时间:2019-03-07 22:36:35

标签: php laravel

我有4个字段,分别是ID,名称,前缀, date_naissance 。 当我在phymyadmin中插入录音时,date_naissance没问题。

enter image description here

但是,当我尝试以插入形式插入date_naissance时,出现错误消息。

enter image description here

  

SQLSTATE [HY000]:常规错误:1364字段“ date_naissance”没有   具有默认值(SQL:插入elevesnomprenom,   updated_atcreated_at)值(Benoit,Piret,2019-03-07   22:31:24,2019-03-07 22:31:24))

您看到问题了吗?

public function create()
{
    return view('admin.eleves.create', compact('eleves'));
}
public function store(Request $request)
{
    $request->validate([
        'nom' => 'required|string',
        'prenom' => 'required|string',
        'date_naissance' => 'required|date'
    ]);
   Eleve::create($request->all());
   return redirect()->route('eleves.index')
                    ->with('success', 'save');
}

我的视图创建

<form class="panel-body" action="{{route('eleves.store')}}" method="POST">
  @csrf
  <fieldset class="form-group">
     <label for="form-group-input-1">Nom</label>
     <input type="text" name="nom" class="form-control" id="form-group-input-1">
  </fieldset>

  <fieldset class="form-group">
     <label for="form-group-input-1">Prénom</label>
     <input type="text" name="prenom" class="form-control" id="form-group-input-1">
  </fieldset>

  <fieldset class="form-group">
     <label for="form-group-input-1">Date naissance</label>
     <input type="date" name="date_naissance" class="form-control" id="form-group-input-1">
  </fieldset>

  <a href="{{route('eleves.index')}}" class="btn btn-primary pull-right">Back</a>
  <button type="submit" class="btn btn-sm btn-primary">Valider</button>
</form>

型号:

class Eleve extends Model
{
    //
    protected  $fillable = ['nom', 'prenom'];
    protected $dates = ['date_naissance'];

2 个答案:

答案 0 :(得分:1)

在您的模型中

class Eleve extends Model
{
    //
    protected  $fillable = ['nom', 'prenom','date_naissance']; // missing date_naissance here.
    protected $dates = ['date_naissance'];

答案 1 :(得分:1)

您将需要在模型上指定 fillable guarded 属性,因为所有雄辩的模型都可以防止大规模分配默认。

您可以指定在模型中可以批量分配的字段,可以通过在模型中添加特殊变量$fillable来完成。因此,在模型中,您还需要添加 date_naissance

class Eleve extends Model {
    protected $fillable = ['nom', 'prenom','date_naissance']; //only the field names inside the array can be mass-assign
    protected $dates = ['date_naissance'];
}

更多详细信息:,您可以在这里What does “Mass Assignment” mean in Laravel

轻松理解