Salah id ketika melakukan deleting data di laravel

Saya sudah membuat CRUD menggunakan Framework Laravel 6.0.

Saya memiliki masalah ketika suatu data dipilih untuk dihapus dengan parameter "id", id data yang saya pilih dengan id yang terhapus berbeda. Contoh : - di MySQL ada 3 data yang tersimpan yang memiliki id masing2: 29 , 30 , 31.

- Ketika di view page tabel yg menampilkan data2 tersebut saya pilih salah satu data yg memiliki id= 31 untuk di delete, hasilnya salah yang terhapus malah data yg memiliki id= 29

- Yang selalu terpilih adalah id yang paling awal atau yang paling lama, misalkan hanya ada data A dengan id= 30 dan data B dengan id= 31. Ketika saya pilih data B untuk di delete di dalam page, maka yang terhapus adalah data A.

Berikut source code yang saya gunakan:

Function di Controller


function deleteClient($id)
    {
        //dd($client);
        $client = client::where('id','=',$id)->first();
        $client->delete();

        return redirect('/view-client');
    }

View Page

@foreach ($client as $c)
...
<a href="/{{ $c->id }}/delete" class="btn btn-danger" data-target="#delModal">Yes</a>
...
@endforeach

Route web

Route::group(['middleware'=>'auth'],function(){

    Route::get('/', function () {
        return view('home');
    });

    // clients
    Route::get('/input-client', 'clientController@inputClient');
    Route::get('/view-client', 'clientController@viewClient');
    Route::get('/{id}/edit', 'clientController@editClient');
    Route::post('/input-client', 'clientController@insertClient');
    Route::get('/{id}/delete', 'clientController@deleteClient');
    Route::put('/{id}/update', 'clientController@updateClient');

    ...

});

    //Authentication
    Route::get('/login', 'authController@login')->name('login');
    Route::post('/postlogin', 'authController@postlogin');
    Route::get('/logout', 'authController@logout');

avatar WildanB
@WildanB

2 Kontribusi 0 Poin

Diperbarui 5 tahun yang lalu

3 Jawaban:

ke napa tida mengguunakan route /delete/{id} ?

avatar maszgalang
@maszgalang

297 Kontribusi 80 Poin

Dipost 5 tahun yang lalu

Halo maszgalang,

Terimakasih atas kontribusinya, Apakah maksudnya seperti dibawah ini ?

<pre> Route::delete('/{id}/delete', 'clientController@deleteClient'); </pre>

Kalo seperti itu, saya sudah pernah mencobanya dan masih sama hasilnya.

avatar WildanB
@WildanB

2 Kontribusi 0 Poin

Dipost 5 tahun yang lalu

Tanggapan

client::where('id')->first(); klo querynya seperti ini?

Hasilnya error , karena delete() ini gabisa hapus id null

<pre> function deleteClient($id) { //dd($client); $client = client::find($id); $client-&gt;delete();

    return redirect(&#039;/view-client&#039;);
}

</pre>

coba pake itu

avatar maszgalang
@maszgalang

297 Kontribusi 80 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban