Rayan Suryadikara
Rayan Suryadikara

Reputation: 247

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

Upvotes: 1

Views: 683

Answers (1)

Filip Koblański
Filip Koblański

Reputation: 9988

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

Upvotes: 2

Related Questions