{"id":58443,"date":"2025-10-29T13:24:28","date_gmt":"2025-10-29T06:24:28","guid":{"rendered":"https:\/\/www.rumahweb.com\/journal\/?p=58443"},"modified":"2026-02-16T10:11:08","modified_gmt":"2026-02-16T03:11:08","slug":"belajar-laravel-bagian-26","status":"publish","type":"post","link":"https:\/\/www.rumahweb.com\/journal\/belajar-laravel-bagian-26\/","title":{"rendered":"Belajar Laravel Bagian 26: Cara Hapus File Dari Database"},"content":{"rendered":"\n<p>Pada tutorial belajar Laravel <strong><a href=\"https:\/\/www.rumahweb.com\/journal\/belajar-laravel-bagian-25\/\" target=\"_blank\" rel=\"noopener\" title=\"\">bagian 25<\/a><\/strong>, kita telah mempelajari cara mengunggah file ke database serta menampilkan preview dari file yang berhasil diunggah. Nah, pada seri belajar Laravel bagian 26 ini, kita akan melanjutkan pembahasan dengan mempelajari cara menghapus file dari database di Laravel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Update Controller<\/strong><\/h2>\n\n\n\n<p>Silakan edit file <strong>app\/Http\/Controllers\/FileController.php<\/strong> untuk menambahkan method <strong>hapus<\/strong>, yang akan kita beri nama dengan method <strong><em>destroy<\/em><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Models\\File;\nuse Illuminate\\Support\\Facades\\Storage;\n\nclass FileController extends Controller\n{\n    public function index()\n    {\n        $files = File::all();\n        return view('upload', compact('files'));\n    }\n\n    public function store(Request $request)\n    {\n        \/\/ Validasi\n        $request-&gt;validate(&#91;\n            'file' =&gt; 'required|mimes:jpg,jpeg,png,pdf|max:2048'\n        ]);\n\n        \/\/ Simpan file ke storage\/app\/public\/uploads\n        $path = $request-&gt;file('file')-&gt;store('uploads', 'public');\n\n        \/\/ Simpan ke database\n        $file = new File();\n        $file-&gt;name = $request-&gt;file('file')-&gt;getClientOriginalName();\n        $file-&gt;path = $path;\n        $file-&gt;save();\n\n        return back()-&gt;with('success', 'File berhasil diupload!');\n    }\n\n    public function destroy($id)\n    {\n        $file = File::findOrFail($id);\n\n        \/\/ Hapus file fisik di storage\n        if (Storage::disk('public')-&gt;exists($file-&gt;path)) {\n            Storage::disk('public')-&gt;delete($file-&gt;path);\n        }\n\n        \/\/ Hapus dari database\n        $file-&gt;delete();\n\n        return back()-&gt;with('success', 'File berhasil dihapus!');\n    }\n}\n\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Update Routes<\/strong><\/h2>\n\n\n\n<p>Selanjutnya edit file&nbsp; <strong>routes\/web.php<\/strong>. Tambahkan Route <strong>delete<\/strong>. <br \/><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use App\\Http\\Controllers\\FileController;\n\nRoute::get('\/upload', &#91;FileController::class, 'index']);\nRoute::post('\/upload', &#91;FileController::class, 'store']);\nRoute::delete('\/upload\/{id}', &#91;FileController::class, 'destroy'])-&gt;name('upload.destroy');<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Update View<\/strong><\/h2>\n\n\n\n<p>Selanjutnya edit untuk tampilan pada file <strong>resources\/views\/upload.blade.php<\/strong>. &nbsp;Untuk menambahkan tombol <strong>Hapus<\/strong> di dalam tabel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Upload File Laravel ke Database&lt;\/title&gt;\n    &lt;link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.3\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div class=\"container mt-5\"&gt;\n    &lt;h2 class=\"mb-4\"&gt;Upload File ke Database&lt;\/h2&gt;\n\n    {{-- Pesan sukses --}}\n    @if(session('success'))\n        &lt;div class=\"alert alert-success\"&gt;{{ session('success') }}&lt;\/div&gt;\n    @endif\n\n    {{-- Error --}}\n    @if($errors-&gt;any())\n        &lt;div class=\"alert alert-danger\"&gt;\n            &lt;ul class=\"mb-0\"&gt;\n                @foreach ($errors-&gt;all() as $err)\n                    &lt;li&gt;{{ $err }}&lt;\/li&gt;\n                @endforeach\n            &lt;\/ul&gt;\n        &lt;\/div&gt;\n    @endif\n\n    &lt;!-- Form Upload --&gt;\n    &lt;div class=\"card shadow mb-4\"&gt;\n        &lt;div class=\"card-body\"&gt;\n            &lt;form action=\"\/upload\" method=\"POST\" enctype=\"multipart\/form-data\"&gt;\n                @csrf\n                &lt;div class=\"mb-3\"&gt;\n                    &lt;label class=\"form-label\"&gt;Pilih File&lt;\/label&gt;\n                    &lt;input type=\"file\" name=\"file\" class=\"form-control\"&gt;\n                &lt;\/div&gt;\n                &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Upload&lt;\/button&gt;\n            &lt;\/form&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n\n    &lt;!-- List File --&gt;\n    &lt;h4&gt;Daftar File&lt;\/h4&gt;\n    &lt;table class=\"table table-bordered align-middle\"&gt;\n        &lt;thead class=\"table-dark\"&gt;\n            &lt;tr&gt;\n                &lt;th&gt;No&lt;\/th&gt;\n                &lt;th&gt;Nama File&lt;\/th&gt;\n                &lt;th&gt;Preview&lt;\/th&gt;\n                &lt;th&gt;Aksi&lt;\/th&gt;\n            &lt;\/tr&gt;\n        &lt;\/thead&gt;\n        &lt;tbody&gt;\n            @forelse($files as $index =&gt; $f)\n                &lt;tr&gt;\n                    &lt;td&gt;{{ $index+1 }}&lt;\/td&gt;\n                    &lt;td&gt;{{ $f-&gt;name }}&lt;\/td&gt;\n                    &lt;td&gt;\n                        @php $ext = pathinfo($f-&gt;path, PATHINFO_EXTENSION); @endphp\n                        @if(in_array($ext, &#91;'jpg','jpeg','png']))\n                            &lt;img src=\"{{ asset('storage\/'.$f-&gt;path) }}\" class=\"img-thumbnail\" style=\"max-width:100px;\"&gt;\n                        @elseif($ext == 'pdf')\n                            &lt;a href=\"{{ asset('storage\/'.$f-&gt;path) }}\" target=\"_blank\" class=\"btn btn-danger btn-sm\"&gt;Lihat PDF&lt;\/a&gt;\n                        @else\n                            &lt;a href=\"{{ asset('storage\/'.$f-&gt;path) }}\" target=\"_blank\" class=\"btn btn-secondary btn-sm\"&gt;Download&lt;\/a&gt;\n                        @endif\n                    &lt;\/td&gt;\n                    &lt;td&gt;\n                        &lt;form action=\"{{ route('upload.destroy', $f-&gt;id) }}\" method=\"POST\" onsubmit=\"return confirm('Yakin hapus file ini?')\"&gt;\n                            @csrf\n                            @method('DELETE')\n                            &lt;button type=\"submit\" class=\"btn btn-danger btn-sm\"&gt;Hapus&lt;\/button&gt;\n                        &lt;\/form&gt;\n                    &lt;\/td&gt;\n                &lt;\/tr&gt;\n            @empty\n                &lt;tr&gt;\n                    &lt;td colspan=\"4\" class=\"text-center\"&gt;Belum ada file&lt;\/td&gt;\n                &lt;\/tr&gt;\n            @endforelse\n        &lt;\/tbody&gt;\n    &lt;\/table&gt;\n&lt;\/div&gt;\n\n&lt;script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.3\/dist\/js\/bootstrap.bundle.min.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Storage Link<\/strong><\/h2>\n\n\n\n<p>Terakhir memastikan symbolic link sudah dibuat. Jalankan perintah berikut<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan storage:link<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Lakukan Testing<\/strong><\/h2>\n\n\n\n<p>Silakan akses <strong>http:127.0.0.1\/upload<\/strong> kemudian upload file (jpg\/png\/pdf). File yang diupload tersebut akan disimpan di folder <strong>storage<\/strong> dan akan masuk ke dalam path database.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"502\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-1024x502.png\" alt=\"testing hapus file laravel\" class=\"wp-image-58448\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-1024x502.png 1024w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-300x147.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-768x377.png 768w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-370x182.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-270x132.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-570x280.png 570w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1-740x363.png 740w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-1.png 1131w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Lakukan hapus file dengan tekan tombol <strong>Hapus<\/strong>. Saat tombol ini di klik, akan tampil popup yang mengkonfirmasi apakah Anda benar ingin menghapus file tersebut?&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"454\" height=\"152\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-2.png\" alt=\"popup validasi \" class=\"wp-image-58449\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-2.png 454w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-2-300x100.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-2-370x124.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-2-270x90.png 270w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>Saat Anda klik Oke, maka file akan dihapus, dan informasi path di database juga akan dihapus.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"432\" src=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-1024x432.png\" alt=\"belajar laravel hapus file \" class=\"wp-image-58450\" srcset=\"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-1024x432.png 1024w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-300x127.png 300w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-768x324.png 768w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-370x156.png 370w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-270x114.png 270w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-570x241.png 570w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3-740x312.png 740w, https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/Cara-Hapus-File-Dari-Database-gambar-3.png 1291w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Penutup<\/strong><\/h2>\n\n\n\n<p>Sekarang, Anda telah mempelajari cara menghapus file dari database menggunakan Laravel. Dengan langkah ini, fitur upload file pada aplikasi Laravel Anda menjadi lebih lengkap karena sudah dilengkapi dengan fungsi untuk menghapus file yang tidak lagi dibutuhkan.<\/p>\n\n\n\n<p>Demikian tutorial belajar Laravel bagian 26 tentang cara menghapus file dalam database di Laravel. Ikuti terus seri belajar Laravel selanjutnya dari Rumahweb Indonesia, agar kemampuan Laravel Anda semakin meningkat. Semoga bermanfaat.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pada tutorial belajar Laravel bagian 25, kita telah mempelajari cara mengunggah file ke database serta menampilkan preview dari file yang berhasil diunggah. Nah, pada seri belajar Laravel bagian 26 ini, kita akan melanjutkan pembahasan dengan mempelajari cara menghapus file dari database di Laravel. Update Controller Silakan edit file app\/Http\/Controllers\/FileController.php untuk menambahkan method hapus, yang akan [&hellip;]<\/p>\n","protected":false},"author":319,"featured_media":58801,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[1587,135,796,1497],"class_list":{"0":"post-58443","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-web-programming","8":"tag-belajar-laravel","9":"tag-database","10":"tag-laravel","11":"tag-tutorial-laravel"},"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/10\/banner-belajar-laravel-bagian-26.png","jetpack_shortlink":"https:\/\/wp.me\/p8n3G7-fcD","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/58443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/users\/319"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/comments?post=58443"}],"version-history":[{"count":4,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/58443\/revisions"}],"predecessor-version":[{"id":61808,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/58443\/revisions\/61808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media\/58801"}],"wp:attachment":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media?parent=58443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/categories?post=58443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/tags?post=58443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}