Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

david2000's avatar

Duplicate system on two forms

My project is to create a small driving school for motorbike.

I have 4 tables: Former, Training, Revision, Motorbike

My functions create() and store() work for my 4 forms.

However, I have a big problem ... If, my motorbike is in revision on03/09/2019 to 05/09/2019 for the motorbike000001

and that I encode in my form training a booking on 03/09/2019 with as motorbike number 000001; Normally the motorbike is unavailable, how can I handle that?

Is it possible to create a duplicate system for the forms revision ->training or the inverse training ->revision

In my Controller Revision I have this:

public function index()
    {
        $revisions = Revision::oldest()->paginate(5);
        return view('admin.revisions.index', compact('revisions'))
          ->with('i', (request()->input('page',1) -1)*5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()            
    {
        
        $motorbikes = Motorbike::all();
        return view('admin.revisions.create', compact('motorbikes','revisions'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        
        $date_revision_start = $request->get('date_revision_start');
        $date_revision_end = $request->get('date_revision_end');
        $hour_start = $request->get('hour_start');
        $hour_end = $request->get('hour_end');
        $garage = $request->get('garage');
        $fk_motorbike = $request->get('fk_motorbike');

        $conflict = Revision::where('fk_motorbike', $request->get('fk_motorbike'))->whereDate('date_revision_start', "<=" , $date_revision_start)
            ->whereDate('date_revision_end', ">=", $date_revision_start)
            ->first();

        $conflict2 = Revision::where('fk_motorbike', $request->get('fk_motorbike'))->whereDate('date_revision_start', "<=" , $date_revision_end)->whereDate('date_revision_end', ">=", $date_revision_end)->first();

      
    
        if(isset($conflict2) || isset($conflict)){
            return redirect()->route('revisions.index')
             ->with('error', 'duplicate');
        }

       else{
        Revision::create($request->all());
            return redirect()->route('revisions.index')
                ->with('success', 'new data created successfully');
        }
       
    }

And for the Controller Training

public function index()
    {
        $trainings = Training::oldest()->paginate(5);
        return view('admin.trainings.index', compact('trainings'));
                with('i', (request()->input('page', 1) -1) *5);
    }

 

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {   
        $motorbikes = Motorbike::all();
        $formers = Former::all();
        return view('admin.trainings.create', compact('motorbikes','formers','trainings'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
                'date_seance' => 'required',
                'hour_start' => 'required',
                'hour_end' => 'required',
                'fk_motorbike' => 'required',
                'fk_former' => 'required'
                
                
        ]);


       $exists = Training::where('date_seance', $request->get('date_seance'))->where('hour_start', $request->get('hour_start'))->where('hour_end', $request->get('hour_end'))->where('fk_motorbike', $request->get('fk_motorbike'))->count();

       if (!$exists){
            Training::create($request->all());
            return redirect()->route('trainings.index')
                ->with('success', 'Add!');
        }

        else{
            return redirect()->route('trainings.index')
                ->with('error', 'Duplicate ');

        } 
       

    }

Could you help me please, because I'm still a beginner in Laravel and I want to solve this problem.

Thanks in advance

0 likes
2 replies
jlrdw's avatar

You need some sort of "flag" set. Such as a checkbox perhaps. Or a query that checks between dates for availability.

david2000's avatar

You need some sort of "flag" set. Such as a checkbox perhaps. Or a query that checks between dates for availability.

For exemple, when my motorbike (number) 000001 is under revision on08/09/2019 to 09/09/2019 and that then I have to organize a seance on 08/09 / 2019 always with the motobike 000001, I must to have a checking system that checks whether the motorbike is available or not ... Here, for example, the bike must be unavailable

Please or to participate in this conversation.