如果列中不存在,则使用 Laravel eloquent 插入数据
Posted
技术标签:
【中文标题】如果列中不存在,则使用 Laravel eloquent 插入数据【英文标题】:insert data if not exist in the column using Laravel elequant 【发布时间】:2020-08-29 08:03:43 【问题描述】:我正在开发一个医生预约 laravel 项目。条件是,如果用户确定了约会,他们就无法在相同的日期和时间为同一位医生确定约会。我尝试了 firstOrCreate 方法,但不符合我的条件。这是我的条件
1.如果医生 ID AND 日期和时间已经存在,则不应插入数据 2.如果dorsed_id OR date OR time,其中任意三个已经存在则可以插入数据 3.如果所有字段都不存在,则插入数据
这里是代码sn-ps
在视图中
<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();
【问题讨论】:
你也可以使用 Model::updateOrCreate(['columns']); 【参考方案1】:这里我通过where条件解决了这个问题
在控制器中
$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 找到这个解决方案。
【讨论】:
以上是关于如果列中不存在,则使用 Laravel eloquent 插入数据的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 在 JSON 列中查找日期在某个范围内的所有记录
updateOrCreate在Laravel Eloquent中不起作用
Laravel Eloquent - 使用连接选择列文本类似于其他表中的列文本