Eloquent 如果列中不存在数据,请使用Laravel elequant插入数据

Eloquent 如果列中不存在数据,请使用Laravel elequant插入数据,eloquent,orm,laravel-7,Eloquent,Orm,Laravel 7,我正在开发一个医生预约项目。条件是,如果用户修改了预约,则他们无法在同一日期和时间修改同一医生的预约。我尝试了first或create方法,但不符合我的条件。这是我的条件 1.如果医生id、日期和时间已经存在,则不应插入数据 2.如果医生的id、日期或时间已经存在,则可以插入数据 3.如果所有字段都不存在,则插入数据 下面是代码片段 鉴于 <div class="card-body"> <form action="appointment&q

我正在开发一个医生预约项目。条件是,如果用户修改了预约,则他们无法在同一日期和时间修改同一医生的预约。我尝试了first或create方法,但不符合我的条件。这是我的条件

1.如果医生id、日期和时间已经存在,则不应插入数据 2.如果医生的id、日期或时间已经存在,则可以插入数据 3.如果所有字段都不存在,则插入数据

下面是代码片段

鉴于

    <div class="card-body">
<form action="appointment" method="post">
    {{ @csrf_field() }}
                       <select name="doctors" id="" class="form-control">

                        @foreach ($docList as $item)
                    <option value="{{$item->id}}">{{$item->name}}</option>
                        @endforeach
                    </select><br><br>
                    <input type="date" name="date" id="" class="form-control">
                    <br><br>
                    <select name="time" class="form-control">
                        <option value="9-10AM">9-10AM</option>
                        <option value="10-11AM">10-11AM</option>
                        <option value="1-2PM">1-2PM</option>
                        <option value="2-3PM">2-3PM</option>
                        <option value="3-4PM">3-4PM</option>
                    </select>
                    <button type="submit" class="btn btn-primary">Fix Appointment</button>
</form>
                </div>

在这里,我使用where条件对问题进行了分类

内部控制器

  public function store(Request $request)
    {
        $uId = Auth::id();

        $fixAppointment = Appointment::firstOrNew(['doctors_id'=>$request->doctors,'date'=>request('date')],['time'=>request('time')]);
        
        $fixAppointment->users_id = $uId;

        $fixAppointment->save();
    }
 $appointment = Appointment::where('date', '=', request('date'))->where('time','=',request('time'))->where('doctors_id','=',request('doctors'))->first();

         if ($appointment === null)
         {
            $fixAppointment = New Appointment;
            $fixAppointment->doctors_id = $request->doctors;
            $fixAppointment->users_id = $uId;
            $fixAppointment->date = $request->date;
            $fixAppointment->time=$request->time;

            $fixAppointment->save();  
}

以下是我提到的找到此解决方案的方法。

您还可以使用Model::updateOrCreate(['columns']);