Habib Ellah
Habib Ellah

Reputation: 11

i have a problem with saving data to database using LARAVEL

this is all my codes after cliking on button doesn't save to database i try to change method of saving but not work

    use App\makereservations;
use Illuminate\Http\Request;

class reservationController extends Controller
{
    public function hreservation()
    {
        return view('hreservation');
    }
    public function reserve (Request $request)
    {
        $this->validate($request ,[
            'name' => 'required',
            'email' => 'required',
            'phone' => 'required|email',
            'date' => 'required',
            'time' => 'required',

        ]);
        $reservation  = new makereservations();
        $reservation  =  $request->input('name');
        $reservation  =  $request->input('email');
        $reservation  =  $request->input('phone');
        $reservation  =  $request->input('date');
        $reservation  =  $request->input('time');
        $reservation  =  $request->input('personne');
        $reservation -> statu =  false;
        $reservation -> save();
        return redirect()->back();
    }
}

this is the roote route::post('reserve', 'reservationController@reserve' )->name('reserv.sent');

Upvotes: 0

Views: 70

Answers (3)

Akhtar Munir
Akhtar Munir

Reputation: 1769

You can do it more shortly and in a clean way, to optimize your code.

public function reserve (Request $request)
{
    $attributes = $this->validate($request ,[
        'name' => 'required',
        'email' => 'required|email',
        'phone' => 'required',
        'date' => 'required',
        'time' => 'required',
        'personne' => ''
    ]);

    $attributes['statu'] = false;

    makereservations::create($attributes);
    return redirect()->back();
}

In your model make sure these things

class makereservations extends Model
{
    protected $table = 'reservation';
    protected $guarded = []; //it means all data from request will be mass assignable
}

Upvotes: 0

Daniel Mesa
Daniel Mesa

Reputation: 586

If in the MakeReservations model you have massively assignable fields

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class makereservations extends Model
{
    protected $table = "your_table_name"
    ...
    protected $fillable = [
        'name', 'email', 'phone', 'date', 'time', 'personne', 'status'
    ];
    ...
}

Your reserve method in reservationController it may be so:

<?php

namespace App\Http\Controllers;

use App\makereservations;
use Illuminate\Http\Request;

class reservationController extends Controller
{
    ...
    public function reserve (Request $request)
    {
        $this->validate($request ,[
            'name' => 'required',
            'email' => 'required|email',
            'phone' => 'required',
            'date' => 'required',
            'time' => 'required',

        ]);
        $inputs = $request->all();
        $inputs['status'] = false;
        $reservation = makereservations::create($inputs);
        return redirect()->back();
    }
}

I have detected that in your validation method you are trying to validate that the phone is an email

Upvotes: 1

Rafik Farhad
Rafik Farhad

Reputation: 1202

You missed the -> arrow sign.

$reservation  = new makereservations();
$reservation->name  =  $request->input('name');
$reservation->email  =  $request->input('email');
$reservation->phone  =  $request->input('phone');
$reservation->date  =  $request->input('date');
$reservation->time  =  $request->input('time');
$reservation->personne  =  $request->input('personne');
$reservation-> statu =  false;
$reservation-> save();
return redirect()->back();

Upvotes: 1

Related Questions