Remove unused MorphToMany relationships from models and add CategoriesTableSeeder for category data population

This commit is contained in:
Mekan1206
2026-02-09 02:26:59 +05:00
parent 41d6ddc346
commit bac1579285
11 changed files with 185 additions and 9 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
{

View File

@@ -0,0 +1,41 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('user_addresses', function (Blueprint $table) {
$table->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();
});
}
};

View File

@@ -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,
]);
}
}

View File

@@ -0,0 +1,56 @@
<?php
namespace Database\Seeders\New;
use App\Models\User;
use Exception;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use JsonMachine\Items;
use JsonMachine\JsonDecoder\ExtJsonDecoder;
class AddressSeeder extends Seeder
{
public function run()
{
DB::transaction(function () {
$table = 'user_addresses';
$items = Items::fromFile(
database_path('data/addresses.json'),
['decoder' => 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();
}
}
});
}
}

View File

@@ -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,

View File

@@ -0,0 +1,41 @@
<?php
namespace Database\Seeders\New;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use JsonMachine\Items;
use JsonMachine\JsonDecoder\ExtJsonDecoder;
class CategoriesTableSeeder extends Seeder
{
public function run()
{
DB::transaction(function () {
$table = 'categories';
$items = Items::fromFile(
database_path('data/categories.json'),
['decoder' => 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}))
");
});
}
}

View File

@@ -28,4 +28,4 @@ class ProductPricesSeeder extends Seeder
}
});
}
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Database\Seeders\New;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Str;
class PropertiesTableSeeder extends Seeder
{
public function run()
{
$datas = json_decode(File::get('database/data/properties.json'));
$table = 'attributes';
DB::table($table)->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}))
");
}
}