From a7b7f09eb1ee0ea76a416b427ec9c44094377f4c Mon Sep 17 00:00:00 2001 From: Joseph Kerkhof Date: Wed, 15 Oct 2025 09:03:01 -0500 Subject: [PATCH 1/2] Add `shouldRun()` method to Seeder --- src/Illuminate/Database/Seeder.php | 14 ++++++++++++++ tests/Database/DatabaseSeederTest.php | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/Illuminate/Database/Seeder.php b/src/Illuminate/Database/Seeder.php index cac50afb579d..05bb2ab4520d 100755 --- a/src/Illuminate/Database/Seeder.php +++ b/src/Illuminate/Database/Seeder.php @@ -32,6 +32,16 @@ abstract class Seeder */ protected static $called = []; + /** + * Determine if this seeder should run. + * + * @return bool + */ + public function shouldRun(): bool + { + return true; + } + /** * Run the given seeder class. * @@ -47,6 +57,10 @@ public function call($class, $silent = false, array $parameters = []) foreach ($classes as $class) { $seeder = $this->resolve($class); + if (! $seeder->shouldRun()) { + continue; + } + $name = get_class($seeder); if ($silent === false && isset($this->command)) { diff --git a/tests/Database/DatabaseSeederTest.php b/tests/Database/DatabaseSeederTest.php index aa80f2c5f453..3c3834699d7f 100755 --- a/tests/Database/DatabaseSeederTest.php +++ b/tests/Database/DatabaseSeederTest.php @@ -45,11 +45,24 @@ public function testCallResolveTheClassAndCallsRun() $container->shouldReceive('make')->once()->with('ClassName')->andReturn($child = m::mock(Seeder::class)); $child->shouldReceive('setContainer')->once()->with($container)->andReturn($child); $child->shouldReceive('setCommand')->once()->with($command)->andReturn($child); + $child->shouldReceive('shouldRun')->once()->andReturn(true); $child->shouldReceive('__invoke')->once(); $seeder->call('ClassName'); } + public function testCallShouldntRun() + { + $seeder = new TestSeeder; + $seeder->setContainer($container = m::mock(Container::class)); + $container->shouldReceive('make')->once()->with('ClassName')->andReturn($child = m::mock(Seeder::class)); + $child->shouldReceive('setContainer')->once()->with($container)->andReturn($child); + $child->shouldReceive('shouldRun')->once()->andReturn(false); + $child->shouldNotReceive('__invoke'); + + $seeder->call('ClassName'); + } + public function testSetContainer() { $seeder = new TestSeeder; From 7dcd98de5e82ed0aa1cb70f20e9dadf51cb72fdf Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Wed, 15 Oct 2025 11:37:18 -0500 Subject: [PATCH 2/2] Update Seeder.php --- src/Illuminate/Database/Seeder.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Illuminate/Database/Seeder.php b/src/Illuminate/Database/Seeder.php index 05bb2ab4520d..7079a2e27640 100755 --- a/src/Illuminate/Database/Seeder.php +++ b/src/Illuminate/Database/Seeder.php @@ -32,16 +32,6 @@ abstract class Seeder */ protected static $called = []; - /** - * Determine if this seeder should run. - * - * @return bool - */ - public function shouldRun(): bool - { - return true; - } - /** * Run the given seeder class. * @@ -154,6 +144,16 @@ protected function resolve($class) return $instance; } + /** + * Determine if this seeder should run. + * + * @return bool + */ + public function shouldRun(): bool + { + return true; + } + /** * Set the IoC container instance. *