laravel - 使用 laravel 编辑两个唯一值
问题描述
我的 Laravel 5.8 项目有问题。我想编辑两个都具有唯一值的字段之一。
刀:
@extends('layouts.master')
@section('content')
<h1>CHANGE SURGICAL DIVISION</h1>
<a href="/surgical-div">
<button type="button" class="btn btn-primary btn-sm">BACK</button><br>
</a>
@if (session('mess'))
<div class="alert alert-success">
{{ session('mess')}}
</div>
@endif
<form method="POST" action="/surgical-div/{{ $surgicaldivs->id_surgical_div }}">
@method('patch')
@csrf
<div class="form-group">
<label for="name_surgical_div">Surgical Division Name: </label>
<input type="text" value="{{ $surgicaldivs->name_surgical_div }}"
class="form-control @error('name_surgical_div') is-invalid @enderror" id="name_surgical_div" name="name_surgical_div"
placeholder="Insert The Surgical Division">
@error('name_surgical_div')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="initial_surgical_div">Surgical Division Initial : </label>
<input type="text" value="{{ $surgicaldivs->initial_surgical_div }}"
class="form-control @error('initial_surgical_div') is-invalid @enderror" id="initial_surgical_div" name="initial_surgical_div"
placeholder="Insert Surgical Division Initial">
@error('initial_surgical_div')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<button type="submit" class="btn btn-success btn-sm">Save</button>
</form>
@endsection
控制器:
public function edit($id)
{
$surgicaldivs = SurgicalDiv::withTrashed()->find($id);
return view('pages.surgical_div.surgical_div_edit', compact('surgicaldivs'));
}
模型:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class SurgicalDiv extends Model
{
//Table Name
protected $table = 'surgical_div';
// Primary Key
protected $primaryKey = 'id_surgical_div';
//Soft Deletes
use SoftDeletes;
//Fillable Field
protected $fillable = ['name_surgical_div', 'initial_surgical_div'];
}
这是我尝试过的控制器中的更新:
public function update(Request $request, SurgicalDiv $SurgicalDiv)
{
$request->validate([
'name_surgical_div' => 'required|unique:surgical_div,name_surgical_div',
'initial_surgical_div' => 'required|unique:surgical_div,initial_surgical_div'
]);
SurgicalDiv::withTrashed()->where('id_surgical_div',$id)
->update([
'name_surgical_div' => $request->name_surgical_div,
'initial_surgical_div' => $request->initial_surgical_div
]);
return redirect('/surgical-div/'.$id.'/edit')->with('mess',' Surgical Division Change Success !');
}
我不知道在控制器的更新功能上放什么。我想从我的刀片更新一个或什至两个字段。
解决方案
尝试这个
public function update(Request $request, SurgicalDiv $SurgicalDiv)
{
$request->validate([
'name_surgical_div' => 'required|unique:surgical_div,name_surgical_div,'.$id,
'initial_surgical_div' => 'required|unique:surgical_div,initial_surgical_div,'.$id
]);
SurgicalDiv::withTrashed()->where('id_surgical_div',$id)
->update([
'name_surgical_div' => $request->name_surgical_div,
'initial_surgical_div' => $request->initial_surgical_div
]);
return redirect('/surgical-div/'.$id.'/edit')->with('mess',' Surgical Division Change Success !');
}
这将检查表中的相同条目,除了带有$id
. 通过这种方式,您可以检查两列中是否还有其他具有相同值的行。
推荐阅读
- java - 使用堆的最大和对数组列表
- amazon-qldb - Amazon QLDB 设计原则
- python - 在执行数据透视时从列值中获取列标题
- azure - Azure ARM 模板 - 应用程序网关 Web 应用程序防火墙配置 SelectorMatchOperator 语法
- c# - 如何使用 dotnet core 从 linux 共享库中导入公共 ref 类
- git - 推送到非空 GitLab 存储库时访问被拒绝
- javascript - 具有列值的材料表数据源过滤器 - 错误 matColumnDef
- linux - 将文本文件拆分成块并保存
- apache - Apache 访问日志指示对我不想“获取”的文件的 GET 请求
- java - 如果存在 task.city,则执行 DDL 更改表时出错