Logo
© 2019 - 2026 SantriKoding.

Laravel : How to delete child relationship Laravel

Pernahkan teman-teman mengalami kasus data child yang terkait pada suatu relasi tidak ikut terhapus saat data induknya dihapus ?.

Berikut ini beberapa solusi yang bisa teman-teman coba.

Dilihat sebanyak 4.830 kali

Laravel Relationships

SOLUTIONS

Berikut ini adalah beberapa solusi yang mungkin bisa membantu kamu.

SOLUTION : 1

Untuk mengatasi problem tersebut, kita bisa melakukan konfigurasi migration dengan onDelete cascade pada bagian foreign key. Contohnya seperti berikut ini.

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->foreignId('category_id')->references('id')->on('categories')->cascadeOnDelete();
        $table->timestamps();
    });
}

Terima Kasih

SOLUTION : 2

Jika teman-teman sudah terlanjur melewatkan pada migration untuk konfigurasi onDelete cascade, maka kita juga bisa melakukan delete child data di dalam controller. Berikut ini contohnya.

public function destroy($id)
{
    //find category
    $category = Category::find($id);

    // delete all associated posts
    $category->posts()->delete();

    //...
}

Di atas, pastikan teman-teman memiliki nama method di dalam model untuk relasi many. Untuk contoh di atas nama method saya adalah posts.

Atau teman-teman juga bisa menggunakan kode seperti berikut ini.

public function destroy($id)
{
    //find category
    $category = Category::find($id);

    // delete all associated posts
    foreach($category->posts()->get() as $post) {

        //delete post
        $post->delete()
    }

    //...
}

Terima Kasih

KEBIJAKAN KOMENTAR

Saat memberikan komentar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami

Memuat komentar...