Skip to content
logo

Kotak Kode Pemograman

Sharing tentang bahasa pemograman

  • WordPress
    • Plugin
  • Tutorial
    • PHP
  • Laravel
  • Tools Webbsite
  • Desain
  • Source Code
  • Web Developer
  • Toggle search form

Seeder Laravel dari File JSON sekaligus Upload Gambar dari Link Eksternal

Posted on 21/06/202421/06/2024 By kotakkode No Comments on Seeder Laravel dari File JSON sekaligus Upload Gambar dari Link Eksternal

Pada artikel ini, kita akan membahas tentang seeder dalam Laravel yang dapat mengambil data dari file JSON dan sekaligus mengunggah gambar dari link eksternal. Seeder digunakan untuk mengisi data awal ke dalam tabel database.

Seeder yang akan kita bahas adalah ProductsTableSeeder. Berikut adalah penjelasan langkah demi langkah dari kode tersebut:

  1. Pertama, kita perlu mengimpor kelas-kelas yang diperlukan dan menggunakan trait ImageUploadingTrait.
use Faker\Generator;
use App\Models\Product;
use Illuminate\Support\Str;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Traits\ImageUploadingTrait;
  1. Selanjutnya, kita mendefinisikan kelas ProductsTableSeeder yang merupakan turunan dari kelas Seeder yang disediakan oleh Laravel, dan menggunakan trait ImageUploadingTrait.
class ProductsTableSeeder extends Seeder
{
    use ImageUploadingTrait;
    // ...
}
  1. Pada fungsi run(), kita membaca data dari file JSON menggunakan File::get() dan kemudian mengurai data tersebut menjadi objek menggunakan json_decode().
$json = File::get("database/data/h.json");
$data = json_decode($json);
$faker = app(Generator::class);
  1. Selanjutnya, kita melakukan perulangan foreach untuk setiap elemen dalam objek data.
foreach ($data as $value) {
    // ...
}
  1. Di dalam perulangan, kita mengambil gambar dari URL eksternal menggunakan file_get_contents() dan mendapatkan informasi dasar dari gambar menggunakan pathinfo().
$gambar = file_get_contents(str_replace(" ", "%20", $value->src));
$basename = pathinfo(str_replace(" ", "%20", $value->src));
  1. Selanjutnya, kita membuat record baru dalam tabel ‘products’ menggunakan model Product dan metode create(). Data yang diisi termasuk nama, slug, harga, kuantitas, deskripsi, detail, berat, ID kategori, dan waktu pembuatan dan pembaruan.
$produk = Product::create([
    'name' => $value->title,
    'slug' => Str::slug($value->title),
    'price' => isset($value->harga) ? intval(str_replace(".", "", $value->harga)) : 0,
    'quantity' => random_int(1, 100),
    'description' => $faker->text(),
    'details' => $faker->text(),
    'weight' => random_int(100, 500),
    'category_id' => random_int(1, 3),
    'created_at' => now(),
    'updated_at' => now(),
]);
  1. Setelah itu, kita mengatur properti media untuk record produk yang baru saja dibuat, termasuk nama koleksi, nama file, tipe mime, dan disk penyimpanan.
$media = $produk;
$media->collection_name = 'gallery';
$media->filename = $basename['basename'];
$media->mime_type = 'image/jpeg';
$media->disk = 'public';
  1. Selanjutnya, kita menggunakan Storage::disk('public')->put() untuk menyimpan gambar ke dalam direktori yang ditentukan. Gambar disimpan dalam direktori ‘tmp/uploads/’ dengan nama file yang sesuai.
Storage::disk('public')->put('tmp/uploads/' . $media->filename, $gambar);
  1. Terakhir, kita menggunakan metode save() pada relasi media untuk menyimpan record media yang terkait dengan produk.
$produk->media()->save($media);

Demikianlah penjelasan mengenai seeder Laravel dari file JSON sekaligus upload gambar dari link eksternal. Seeder ini memungkinkan kita untuk mengisi data produk dan mengunggah gambar terkait dari sumber eksternal dengan mudah.

Pastikan Anda telah mengimpor kelas-kelas yang diperlukan dan mengatur konfigurasi sistem file dengan benar sebelum menjalankan seeder ini.

Jadi kode selengkapnya bisa di lihat di bawah ini

<?php

namespace Database\Seeders;

use Faker\Generator;
use App\Models\Product;
use
    Illuminate\Support\Str;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\File;
use
    Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Traits\ImageUploadingTrait;

class ProductsTableSeeder extends Seeder
{
    use ImageUploadingTrait;
    /** * Auto generated seed file * * @return void */ public function run()
    {
        $json = File::get("database/data/h.json");
        $data = json_decode($json);
        $faker = app(Generator::class);
        foreach ($data as $value) {
            $gambar = file_get_contents(str_replace(" ", "%20", $value->src));
            $basename =
                pathinfo(str_replace(" ", "%20", $value->src));
            $produk = Product::create(['name' => $value->title, 'slug' =>
            Str::slug($value->title), 'price' => isset($value->harga) ? intval(str_replace(".", "", $value->harga)) : 0, 'quantity' =>
            random_int(1, 100), 'description' => $faker->text(), 'details' => $faker->text(), 'weight' => random_int(
                100,
                500
            ), 'category_id' => random_int(1, 3), 'created_at' => now(), 'updated_at' => now(),]);
            $media =
                $produk;
            $media->collection_name = 'gallery';
            $media->filename = $basename['basename'];
            $media->mime_type =
                'image/jpeg';
            $media->disk = 'public';
            Storage::disk('public')->put('tmp/uploads/' . $media->filename, $gambar);
            $produk->media()->save($media);
        }
    }
}
Laravel, Seeder

Post navigation

Previous Post: Deployment Laravel
Next Post: Cara checked Old pada checkbox di Laravel

Related Posts

Login laravel lewat link Laravel
Cara menghapus gambar/file di folder public laravel Controller
Contoh Controller Search multi tabel berelasi di laravel Controller
Cara mencari ID di laravel Controller
Jersey Avenue is an interactive SPA project using TALL Stack (TailwindCSS, AlpineJS, Laravel 10, Livewire). Laravel
Seeder Laravel gambar langung dari URL Laravel

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Copyright © 2026 Kotak Kode Pemograman.

Powered by PressBook Grid Blogs theme