my code was working fine untill i added two datetime input fields,every time i click submit it says failed, the two columns in mysql database are datetime type
a message in red displays on the top of the form "échec".the data not stored in database
is there something wrong with my code or the format i used not supported by mysql? at first the two columns were of timestamp type i changed them to datetime but with no result. any help please! i'm stack here for three days
here is my code :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Matériels;
use Auth;
class TestController extends Controller
{
//
public function viewTest()
{
if(Auth::guest())
{
return redirect()->route('/');
}
$data = Matériels::all();
return view('form.form',compact('data'));
}
// save
public function viewTestSave(Request $request)
{
$request->validate([
'type'=>'required|max:100',
'série' => 'required|max:100',
'marque' => 'required|max:100',
'réfference' => 'required|max:100',
'service' => 'required|max:100',
'dis' => 'required|date_format:"Y-m-d\TH:i"',
'expire' => 'required|date_format:"Y-m-d\TH:i"|after:dis',
]);
try{
// here is input field names
$type = $request->type;
$série = $request->série;
$marque = $request->marque;
$réfference = $request->réfference;
$service= $request->service;
$dis= $request->dis;
$expire= $request->expire;
//here input names asigned to column names
$Matériels = new Matériels();
$Matériels->type = $type;
$Matériels->série = $série;
$Matériels->marque = $marque;
$Matériels->réfference = $réfference;
$Matériels->service = $service;
$Matériels->date = $dis;
$Matériels->expires_at = $expire;
$Matériels->save();
return redirect()->back()->with('insert','Données insérées avec succès!.');
}catch(\Exception $e){
return redirect()->back()->with('error','échec!.');
}
}
// update
public function update(Request $request)
{
//here is input field names
$update =[
'id' =>$request->id,
'type' =>$request->type,
'série' =>$request->série,
'marque' =>$request->marque,
'réfference'=>$request->réfference,
'service' =>$request->service,
'dis' =>$request->dis,
'expire' =>$request->expire,
];
Matériels::where('id',$request->id)->update($update);
return redirect()->back()->with('insert','Mise à jour effectué avec succès!.');
}
// delete
public function delete($id)
{
$delete = Matériels::find($id);
$delete->delete();
return redirect()->back()->with('insert','Données supprimées avec succès!.');
}
}
my form :
@extends('layouts.master')
@include('navbar.header')
@section('content')
@include('sidebar.form')
<main class="col bg-faded py-3 flex-grow-1">
<h3>GPI</h3>
<br>
<div class="signup-form">
<form action="{{ route('form/page_test/save') }}" method="post" class="form-horizontal">
{{ csrf_field() }}
<div class="row">
<div class="col-8 offset-4">
<h2>Ajoutez vos matériels</h2>
</div>
</div>
{{-- success --}}
@if(\Session::has('insert'))
<div id="insert" class=" alert alert-success">
{!! \Session::get('insert') !!}
</div>
@endif
{{-- error --}}
@if(\Session::has('error'))
<div id="error" class=" alert alert-danger">
{!! \Session::get('error') !!}
</div>
@endif
<div class="form-group row">
<label class="col-form-label col-4">Type</label>
<div class="col-8">
<input type="text" class="form-control @error('type') is-invalid @enderror" name="type" value="{{ old('type') }}" placeholder="Entrer type">
@error('type')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-4">Série</label>
<div class="col-8">
<input type="text" class="form-control @error('série') is-invalid @enderror" name="série" value="{{ old('série') }}" placeholder="Entrer série">
@error('série')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-4">Marque</label>
<div class="col-8">
<input type="text" class="form-control @error('marque') is-invalid @enderror" name="marque" value="{{ old('marque') }}" placeholder="Entrer la marque">
@error('marque')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-4">Réfference/Modèle</label>
<div class="col-8">
<input type="text" class="form-control @error('réfference') is-invalid @enderror" name="réfference" value="{{ old('réfference') }}" placeholder="Entrer la réfference">
@error('réfference')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-4">service</label>
<div class="col-8">
<input type="text" class="form-control @error('service') is-invalid @enderror" name="service" value="{{ old('service') }}" placeholder="Entrer service">
@error('service')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-4">Date de réception</label>
<div class="col-8">
<input type="datetime-local" name="dis" value="{{ old('dis') }}" class="form-control @error('dis') is-invalid @enderror">
@error('dis')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-4">Date d'expiration</label>
<div class="col-8">
<input type="datetime-local" name="expire" value="{{ old('expire') }}" class="form-control @error('expire') is-invalid @enderror">
@error('expire')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<div class="col-8 offset-4">
<button type="submit" class="btn btn-primary btn-lg">Enregistrer</button>
</div>
</div>
</form>
</div>
{{-- hide message js --}}
<script>
$('#insert').show();
setTimeout(function()
{
$('#insert').hide();
},5000);
$('#error').show();
setTimeout(function()
{
$('#error').hide();
},5000);
</script>
</main>
@endsection
my model :
<?php
namespace App\Models;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Matériels extends Model
{
protected $dates = [
'expire' => 'datetime',
'dis' => 'datetime',
];
protected $table = 'Matériels';
use HasFactory;
protected $fillable = [
'type',
'série',
'marque',
'réfference',
'service',
'dis',
'expire',
];
protected static function boot()
{
parent::boot();
static::creating(function ($model) {
$model->expire = Carbon::parse(request()->input('expire'));
});
static::updating(function ($model) {
if ($model->expire->isPast()) {
$model->status = 'expiré';
$model->save();
}
});
}
public function scopeExpired($query)
{
return $query->whereNotNull('expires_at')
->where('expires_at', '<=', now())
->where('status', '=', 'expiré');
}
}