Search code examples
laravelcontrollerunique

Update validation for unique attribute


I have this function update in my controller :

public function update(Request $request, $id){
    $siswa = Siswa::findOrFail($id);
    $input = $request->all();

    $validator = Validator::make($input, [
        'nisn'=>'required|string|size:4|unique:siswa,nisn'.$request->input('nisn'),
        'nama_siswa'=>'required|string|max:30', 
        'tgl_lahir'=>'required|date',
        'jns_klmin'=>'required|in:L,P',
    ]);

    if ($validator->fails()) {
        return redirect('siswa/'.$id.'/edit')->withInput()->withErrors($validator);
    }

    $siswa->update($request->all());
    return redirect('siswa');
}

Where nisn is an unique attribute. Yet when I run it I always stumble in this screen written :

QueryException in Connection.php line 729: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'nisn1007' in 'where clause' (SQL: select count(*) as aggregate from siswa where nisn1007 = 1007)

Any help appreciated. Thanks in advance


Solution

  • You forgot about , here:

    'nisn'=>'required|string|size:4|unique:siswa,nisn'.$request->input('nisn'),
    

    should be like this:

    'nisn'=>'required|string|size:4|unique:siswa,nisn,'.$request->input('nisn'),
    

    after: siswa,nisn