id(); $table->foreignId('feed_id')->constrained()->cascadeOnDelete(); $table->string('guid'); // or Atom , this is what dedupes $table->string('title'); $table->text('description')->nullable(); $table->string('link'); $table->string('author')->nullable(); $table->string('image_url')->nullable(); $table->timestamp('published_at')->nullable(); $table->timestamps(); $table->unique(['feed_id', 'guid']); $table->index(['feed_id', 'published_at']); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('articles'); } };