id(); $table->enum('type', \App\Enums\ContentType::cases()); $table->string('title'); $table->string('slug')->unique(); $table->text('excerpt')->nullable(); $table->longText('content')->nullable(); $table->json('taxonomies')->nullable(); $table->string('meta_title')->nullable(); $table->text('meta_description')->nullable(); $table->json('meta_keywords')->nullable(); $table->enum('status', \App\Enums\ContentStatus::cases()); $table->foreignId('featured_image_id')->nullable()->constrained('media'); $table->timestamp('published_at')->nullable(); $table->foreignId('created_by')->nullable()->constrained('users'); $table->foreignId('updated_by')->nullable()->constrained('users'); $table->foreignId('deleted_by')->nullable()->constrained('users'); $table->timestamps(); $table->softDeletes(); $table->index('type'); $table->index('status'); $table->index('published_at'); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('contents'); } };