From bac157928567e6089b7969ecbf858360993eec19 Mon Sep 17 00:00:00 2001 From: Mekan1206 Date: Mon, 9 Feb 2026 02:26:59 +0500 Subject: [PATCH] Remove unused MorphToMany relationships from models and add CategoriesTableSeeder for category data population --- app/Models/Ecommerce/Channel/Channel.php | 1 - .../Ecommerce/Product/Category/Category.php | 1 - .../Product/Collection/Collection.php | 1 - .../Product/Concerns/ProductRelationships.php | 1 - ..._09_012316_change_user_addresses_table.php | 41 ++++++++++++++ database/seeders/DatabaseSeeder.php | 7 ++- database/seeders/new/AddressSeeder.php | 56 +++++++++++++++++++ database/seeders/new/BrandsSeeder.php | 8 ++- .../seeders/new/CategoriesTableSeeder.php | 41 ++++++++++++++ database/seeders/new/ProductPricesSeeder.php | 2 +- .../seeders/new/PropertiesTableSeeder.php | 35 ++++++++++++ 11 files changed, 185 insertions(+), 9 deletions(-) create mode 100644 database/migrations/2026_02_09_012316_change_user_addresses_table.php create mode 100644 database/seeders/new/AddressSeeder.php create mode 100644 database/seeders/new/PropertiesTableSeeder.php diff --git a/app/Models/Ecommerce/Channel/Channel.php b/app/Models/Ecommerce/Channel/Channel.php index a252926..8e10f17 100644 --- a/app/Models/Ecommerce/Channel/Channel.php +++ b/app/Models/Ecommerce/Channel/Channel.php @@ -14,7 +14,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphTo; -use Illuminate\Database\Eloquent\Relations\MorphToMany; use Laravel\Nova\Nova; use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; diff --git a/app/Models/Ecommerce/Product/Category/Category.php b/app/Models/Ecommerce/Product/Category/Category.php index 78ff825..9ada22f 100644 --- a/app/Models/Ecommerce/Product/Category/Category.php +++ b/app/Models/Ecommerce/Product/Category/Category.php @@ -10,7 +10,6 @@ use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use Illuminate\Database\Eloquent\Relations\MorphToMany; use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; use Spatie\Image\Manipulations; diff --git a/app/Models/Ecommerce/Product/Collection/Collection.php b/app/Models/Ecommerce/Product/Collection/Collection.php index b565047..7961ba7 100644 --- a/app/Models/Ecommerce/Product/Collection/Collection.php +++ b/app/Models/Ecommerce/Product/Collection/Collection.php @@ -6,7 +6,6 @@ use App\Models\Ecommerce\Product\Product\Product; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use Illuminate\Database\Eloquent\Relations\MorphToMany; use Spatie\EloquentSortable\Sortable; use Spatie\EloquentSortable\SortableTrait; use Spatie\Image\Manipulations; diff --git a/app/Models/Ecommerce/Product/Product/Concerns/ProductRelationships.php b/app/Models/Ecommerce/Product/Product/Concerns/ProductRelationships.php index cb3b81a..6e70882 100644 --- a/app/Models/Ecommerce/Product/Product/Concerns/ProductRelationships.php +++ b/app/Models/Ecommerce/Product/Product/Concerns/ProductRelationships.php @@ -15,7 +15,6 @@ use App\Models\Ecommerce\Product\Review\Review; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; -use Illuminate\Database\Eloquent\Relations\MorphToMany; trait ProductRelationships { diff --git a/database/migrations/2026_02_09_012316_change_user_addresses_table.php b/database/migrations/2026_02_09_012316_change_user_addresses_table.php new file mode 100644 index 0000000..1cb41c0 --- /dev/null +++ b/database/migrations/2026_02_09_012316_change_user_addresses_table.php @@ -0,0 +1,41 @@ +string('title')->nullable(); + $table->string('building')->nullable(); + $table->string('floor')->nullable(); + $table->string('door')->nullable(); + $table->string('location')->nullable(); + + $table->dropColumn('first_name'); + $table->dropColumn('last_name'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('user_addresses', function (Blueprint $table) { + $table->dropColumn('title'); + $table->dropColumn('building'); + $table->dropColumn('floor'); + $table->dropColumn('door'); + $table->dropColumn('location'); + $table->string('first_name')->nullable(); + $table->string('last_name')->nullable(); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index b49740f..33200b0 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,10 +2,13 @@ namespace Database\Seeders; +use Database\Seeders\New\AddressSeeder; use Database\Seeders\New\BrandsSeeder; +use Database\Seeders\New\CategoriesTableSeeder; use Database\Seeders\New\CustomersTableSeeder; use Database\Seeders\New\ProductPricesSeeder; use Database\Seeders\New\ProductsTableSeeder; +use Database\Seeders\New\PropertiesTableSeeder; use Database\Seeders\New\SellersTableSeeder; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; @@ -26,7 +29,9 @@ class DatabaseSeeder extends Seeder // SellersTableSeeder::class, // ProductsTableSeeder::class, // ProductPricesSeeder::class, - CategoriesTableSeeder::class, + // CategoriesTableSeeder::class, + // AddressSeeder::class, + // PropertiesTableSeeder::class, ]); } } diff --git a/database/seeders/new/AddressSeeder.php b/database/seeders/new/AddressSeeder.php new file mode 100644 index 0000000..5cddf84 --- /dev/null +++ b/database/seeders/new/AddressSeeder.php @@ -0,0 +1,56 @@ + new ExtJsonDecoder(true)] + ); + + // First we need to fill user_addresses table with json data, then find user id matching addressable_id and fill user options with {"address": "$data"} + + foreach ($items as $data) { + try { + DB::table($table)->insert([ + 'id' => $data['id'], + 'user_id' => $data['addressable_id'], + 'street_address' => $data['address'], + 'title' => $data['title'], + 'building' => $data['building'], + 'floor' => $data['floor'], + 'door' => $data['door'], + 'location' => $data['location'], + 'type' => $data['type'], + 'created_at' => $data['created_at'], + 'updated_at' => $data['updated_at'], + 'is_default' => false, + ]); + } catch (Exception $e) { + continue; + } + + $user = User::where('id', $data['addressable_id'])->first(); + if ($user) { + info($user); + $user->options->set('address', $data['address']); + $user->save(); + } + } + + }); + } +} diff --git a/database/seeders/new/BrandsSeeder.php b/database/seeders/new/BrandsSeeder.php index d253951..02d4fc8 100644 --- a/database/seeders/new/BrandsSeeder.php +++ b/database/seeders/new/BrandsSeeder.php @@ -17,10 +17,12 @@ class BrandsSeeder extends Seeder DB::table($table)->truncate(); foreach ($datas as $data) { - DB::table($table)->insertOrIgnore([ + $name = json_decode($data->name); + + DB::table($table)->insert([ 'id' => $data->id, - 'slug' => Str::slug(json_decode($data->name)->en ?? $data->code). '_' . $data->id, - 'name' => $data->name, + 'slug' => Str::slug($name->en ?? $data->code).'_'.$data->id, + 'name' => $name->en, 'is_visible' => $data->is_blocked, 'sort_order' => $data->priority, 'created_at' => $data->created_at, diff --git a/database/seeders/new/CategoriesTableSeeder.php b/database/seeders/new/CategoriesTableSeeder.php index e69de29..ea4eba2 100644 --- a/database/seeders/new/CategoriesTableSeeder.php +++ b/database/seeders/new/CategoriesTableSeeder.php @@ -0,0 +1,41 @@ + new ExtJsonDecoder(true)] + ); + + foreach ($items as $data) { + DB::table($table)->insert([ + 'id' => $data['id'], + 'parent_id' => $data['parent_id'], + 'slug' => $data['slug'], + 'name' => str_replace('"tm"', '"tk"', $data['name']), + 'is_visible' => $data['is_blocked'], + 'sort_order' => $data['priority'], + 'tax_percentage' => $data['percentage'], + 'created_at' => $data['created_at'], + 'updated_at' => $data['updated_at'], + ]); + } + + DB::statement(" + SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table})) + "); + }); + } +} diff --git a/database/seeders/new/ProductPricesSeeder.php b/database/seeders/new/ProductPricesSeeder.php index 3034254..704fa0b 100644 --- a/database/seeders/new/ProductPricesSeeder.php +++ b/database/seeders/new/ProductPricesSeeder.php @@ -28,4 +28,4 @@ class ProductPricesSeeder extends Seeder } }); } -} \ No newline at end of file +} diff --git a/database/seeders/new/PropertiesTableSeeder.php b/database/seeders/new/PropertiesTableSeeder.php new file mode 100644 index 0000000..9a22698 --- /dev/null +++ b/database/seeders/new/PropertiesTableSeeder.php @@ -0,0 +1,35 @@ +truncate(); + + foreach ($datas as $data) { + DB::table($table)->insertOrIgnore([ + 'id' => $data->id, + 'slug' => $data->code, + 'name' => str_replace('"tm"', '"tk"', $data->name), + 'description' => $data->description, + 'type' => 'text', + 'created_at' => $data->created_at, + 'updated_at' => $data->updated_at, + ]); + } + + DB::statement(" + SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table})) + "); + } +} \ No newline at end of file