From 485d81ac63d0aa7954631251e11d6ab635446029 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sat, 4 Oct 2025 18:44:59 +0700 Subject: [PATCH] feat(item): menambahkan relasi withPivot di model dan menyesuaikan tabelnya supaya stok nya tampil --- .../Datatable/Studio/Catalog/BottlesTable.php | 13 +++++++++++-- .../Datatable/Studio/Catalog/PerfumesTable.php | 13 +++++++++++-- .../Datatable/Studio/Catalog/ProductsTable.php | 13 +++++++++++-- app/Models/Bottle.php | 2 +- app/Models/Perfume.php | 2 +- app/Models/Product.php | 2 +- 6 files changed, 36 insertions(+), 9 deletions(-) diff --git a/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php b/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php index d5bc7fc..0b3aef9 100644 --- a/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php +++ b/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php @@ -55,8 +55,17 @@ public function columns(): array ]), ArrayColumn::make('Outlet') - ->data(fn ($value, $row) => $row->outlets->pluck('name')->toArray()) - ->outputFormat(fn ($index, $value) => Blade::render(''.$value.'')) + ->data( + fn ($value, $row) => $row->outlets->map(fn ($outlet) => [ + 'name' => $outlet->name, + 'stock' => $outlet->pivot->stock, + ])->toArray() + ) + ->outputFormat(fn ($index, $value) => Blade::render(' +
+ {{ $value["name"] }} + {{ $value["stock"] }} +
', ['value' => $value])) ->flexRow(['class' => 'gap-2 flex-wrap']), Column::make('Aksi') diff --git a/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php b/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php index b35e12f..a6671c8 100644 --- a/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php +++ b/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php @@ -64,8 +64,17 @@ public function columns(): array Column::make('Top Notes', 'top_notes')->searchable()->sortable(), ArrayColumn::make('Outlet') - ->data(fn ($value, $row) => $row->outlets->pluck('name')->toArray()) - ->outputFormat(fn ($index, $value) => Blade::render(''.$value.'')) + ->data( + fn ($value, $row) => $row->outlets->map(fn ($outlet) => [ + 'name' => $outlet->name, + 'stock' => $outlet->pivot->stock, + ])->toArray() + ) + ->outputFormat(fn ($index, $value) => Blade::render(' +
+ {{ $value["name"] }} + {{ $value["stock"] }} +
', ['value' => $value])) ->flexRow(['class' => 'gap-2 flex-wrap']), Column::make('Aksi') diff --git a/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php b/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php index 6a7ce62..ede5fc9 100644 --- a/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php +++ b/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php @@ -47,8 +47,17 @@ public function columns(): array ->sortable(), ArrayColumn::make('Outlet') - ->data(fn ($value, $row) => $row->outlets->pluck('name')->toArray()) - ->outputFormat(fn ($index, $value) => Blade::render(''.$value.'')) + ->data( + fn ($value, $row) => $row->outlets->map(fn ($outlet) => [ + 'name' => $outlet->name, + 'stock' => $outlet->pivot->stock, + ])->toArray() + ) + ->outputFormat(fn ($index, $value) => Blade::render(' +
+ {{ $value["name"] }} + {{ $value["stock"] }} +
', ['value' => $value])) ->flexRow(['class' => 'gap-2 flex-wrap']), Column::make('Aksi') diff --git a/app/Models/Bottle.php b/app/Models/Bottle.php index 35298ca..982c3e0 100644 --- a/app/Models/Bottle.php +++ b/app/Models/Bottle.php @@ -38,6 +38,6 @@ public function getSlugOptions(): SlugOptions public function outlets(): BelongsToMany { - return $this->belongsToMany(Outlet::class); + return $this->belongsToMany(Outlet::class)->withPivot('stock'); } } diff --git a/app/Models/Perfume.php b/app/Models/Perfume.php index c055e7d..444ebcc 100644 --- a/app/Models/Perfume.php +++ b/app/Models/Perfume.php @@ -48,6 +48,6 @@ public function categories(): BelongsToMany public function outlets(): BelongsToMany { - return $this->belongsToMany(Outlet::class); + return $this->belongsToMany(Outlet::class)->withPivot('stock'); } } diff --git a/app/Models/Product.php b/app/Models/Product.php index 6175c16..9b6f391 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -35,6 +35,6 @@ public function getSlugOptions(): SlugOptions public function outlets(): BelongsToMany { - return $this->belongsToMany(Outlet::class); + return $this->belongsToMany(Outlet::class)->withPivot('stock'); } }