我有一些数据库,其中一个表的属性是ID_teknisi,具有唯一键。我正在尝试检查是否包含相同的值,并显示错误页面。所以我想在错误页面之前在此页面上显示警报。
我使用Laravel和MySQL语言PHP。
我已经在Laravel中的控制器中进行了编码。
public function store(Request $request)
{
$data = new ModelTeknisi();
if ($data->ID_teknisi==$request->ID_teknisi){
return alert('ID Teknisi sudah ada!');history.go(-1);
} else {
$data->ID_teknisi = $request->ID_teknisi;
$data->nama_lengkap = $request->nama_lengkap;
$data->no_hp = $request->no_hp;
$data->password = $request->password;
$data->re_password = $request->re_password;
$data->save();
return redirect()->route('teknisi.index')->with('alert-success','Berhasil Menambahkan Data!');
}
}
我希望它将显示警报。但是显示错误。
Illuminate \ Database \ QueryException与消息一起抛出 “ SQLSTATE [23000]:违反完整性约束:1062重复的条目 密钥“ ID_teknisi”的“ SHU27HSY”(SQL:插入
acc_teknisi
({ID_teknisi
,nama_lengkap
,no_hp
,password
,re_password
,updated_at
,created_at
)值(SHU27HSY,Elang Bayu, 081234037169,halo,halo,2019-07-17 02:38:53,2019-07-17 02:38:53))“
答案 0 :(得分:0)
您可以从文档中检查 https://laravel.com/docs/5.8/validation#form-request-validation
public function rules()
{
return [
'ID_teknisi' => 'required|unique:acc_teknisi,ID_teknisi'
];
}
,并验证所有字段 并在刀片文件中以格式
@if($errors->has('ID_teknisi'))
{{$errors->first('email');}}
@endif
Plz,请先了解如何对请求进行验证,然后编写示例代码
答案 1 :(得分:0)
因为描述提供给ID_teknisi
的值的错误已经存在。因此,您每次插入数据库之前都必须检查唯一值。
根据您的方法,您正在将JavaScript应用于PHP,这不是正确的方法。
$data = new ModelTeknisi();
if ($data->ID_teknisi==$request->ID_teknisi){
return alert('ID Teknisi sudah ada!');history.go(-1);
}
您可以通过稍微修改方法来实现。
public function store(Request $request)
{
// First check if the value should be unique
$request->validate([
'ID_teknisi' => 'required|unique:acc_teknisi,ID_teknisi'
], [
'ID_teknisi.unique' => 'ID Teknisi sudah ada!'
]);
$data = new ModelTeknisi();
$data->ID_teknisi = $request->ID_teknisi;
$data->nama_lengkap = $request->nama_lengkap;
$data->no_hp = $request->no_hp;
$data->password = $request->password;
$data->re_password = $request->re_password;
$data->save();
return redirect()->route('teknisi.index')
->with('alert-success','Berhasil Menambahkan Data!');
}
然后在刀片模板上添加以下代码。
@if($errors->has('ID_teknisi'))
<script>alert({{ $errors->first('ID_teknisi') }});</script>
@endif
如果您使用的是Laravel的旧版本,则可以通过https://laravel.com/docs/5.8/validation#manually-creating-validators
来实现