Iman Sugirman

Fullstack Developer Experience 6 years, using Laravel and ReactJs

Laravel Strategy Product Tag Pivotable

23 March 2022
Laravel Strategy Product Tag Pivotable
Cloud Server Untuk Laravel
Dapatkan Gratis $100 Untuk Deploy Laravel
Deploy Now

Untuk Membuat Pivot table di laravel sangat dimudahkan karna memang power Eloquent sendiri memang sangat Powerfull. dan sekarang saya akan membahas Untuk Relasi Data Pivot antara table product dan tag sekarang bisa ditambahkan table product_tag agar kita lebih mudah dalam memanage Relasi Pivot Table:

php artisan make:migration create_product_tag_table

dan sekarang sudah ada file xxx_create_product_tag_table dan sekarang tambahkan di schema file migration tersebut seperti ini :

... Schema::create('product_tag', function (Blueprint $table) { $table->id(); // kolom product_id akan direlasikan ke table product $table->foreignId('product_id')->constrained('product'); // kolom tag_id akan direlasikan ke table product $table->foreignId('tag_id')->constrained('tag'); $table->timestamps(); }); ...

Sekarang buat model untuk table tersebut agar nanti bisa kita relasikan menggunakan Table itu:

php artisan make:model ProductTag

Edit file ProductTag model menjadi seperti ini :

... use Illuminate\Database\Eloquent\Relations\Pivot; // Di Class ganti Model Menjadi Pivot class ProductTag extends Pivot { use HasFactory; // Relasi Ke Model Product public function product(): BelongsTo { return $this->belongsTo(Product::class, 'product_id'); } // Relasi Ke Model Tag public function tag(): BelongsTo { return $this->belongsTo(Tag::class, 'tag_id'); } } ...

Sekarang kita sudah berhasil membuat relasi dengan model baru yaitu ProductTag dan sekarang kita ubah dan tambahkan relasi model Product nya seperti ini :

public function tags(): BelongsToMany { return $this->belongsToMany(Tag::class, 'product_tag', 'product_id', 'tag_id') ->using(ProductTag::class); }

Proses Merelasikan ketika membuat Product

Sekarang kita buat proses di controller ProductController ini bisa juga dengan nama file yang anda buat sebelumnya di tahap proses yang diinginkan:

... // Proses Create Product $product = Product::create(...); // Proses Relasi ke Tags yang tadi kita buat $product->tags()->attach($request->input('tags'));

Query Relasi Laravel Pivot Table

Relasi Load di Laravel Untuk Menarik data load tags dalam product bisa berbagai cara, saya lebih menggunakan cara yang simple seperti ini :

... // Cari produk berdasarkan parameter :id $product = Product::find($id); // Load data tags yang berhubungan dengan product $product->load('tags'); return view('product.show', ['product' => $product]);
Cloud Server Untuk Laravel
Dapatkan Gratis $100 Untuk Deploy Laravel
Deploy Now
Subscribe to our newsletter!
Dapatkan Tutorial terbaru dari saya dikirim ke email anda...