id(); $table->string('title'); $table->string('slug')->unique(); $table->longText('content'); $table->text('excerpt')->nullable(); $table->string('meta_title')->nullable(); $table->text('meta_description')->nullable(); $table->enum('status', ['draft', 'published', 'archived'])->default('draft'); $table->string('featured_image')->nullable(); $table->timestamp('published_at')->nullable(); $table->foreignId('author_id')->constrained('users')->onDelete('cascade'); $table->foreignId('category_id')->nullable()->constrained('blog_categories')->onDelete('set null'); $table->json('tags')->nullable(); $table->integer('view_count')->default(0); $table->boolean('is_featured')->default(false); $table->boolean('allow_comments')->default(true); $table->timestamps(); $table->softDeletes(); $table->index(['status', 'published_at']); $table->index(['category_id', 'status']); $table->index(['is_featured', 'status']); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('blogs'); } };