如何解决使用Laravel Elequant
我正在开发医生的预约laravel项目。条件是,如果用户确定约会,则他们将无法在同一日期和时间为同一位医生确定约会。我尝试使用 firstOrCreate 方法,但不符合我的条件。这是我的条件
1. 如果Doctors_id AND日期和时间已经存在,则不应插入数据 2. 如果doctors_id OR日期或时间已存在,则可以插入数据中的任何三个 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>
在控制器中
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();
}
这是我用来查找此解决方案的link。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。