Eloquent 如果列中不存在数据,请使用Laravel elequant插入数据
我正在开发一个医生预约项目。条件是,如果用户修改了预约,则他们无法在同一日期和时间修改同一医生的预约。我尝试了first或create方法,但不符合我的条件。这是我的条件 1.如果医生id、日期和时间已经存在,则不应插入数据 2.如果医生的id、日期或时间已经存在,则可以插入数据 3.如果所有字段都不存在,则插入数据 下面是代码片段 鉴于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
<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']);