Вместо этого добавьте все новые файлы сеялок вручную один за другим в файл DatabaseSeeder.php, можно ли автоматически запускать все файлы в каталоге семян. Это возможно?
PS: Конечно (как упоминал @DissidentRage) в этом случае мы должны учитывать, что автоматизация таких процессов может сделать ваши сеялки независимыми и может вызвать много проблем.
Я столкнулся с этим вопросом и нашел этот способ как простой ответ.
Вы можете легко использовать scandir(), чтобы поместить все имена файлов в массив, а затем пропустить их, используя цикл foreach. А затем вызовите/запустите их все автоматически. Таким образом, вам не нужно добавлять новый класс к методу run()
каждый раз, когда вы создаете (в основном с помощью php artisan make:seeder SomeTableSeeder
) php artisan make:seeder SomeTableSeeder
.
Итак, вместо этого:
// database/seeds/DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
public function run() {
$this->call(UsersTableSeeder::class);
$this->call(AnotherTableSeeder::class);
...
}
}
Просто используйте:
// database/seeds/DatabaseSeeder.php
class DatabaseSeeder extends Seeder
{
public function run(){
$files_arr = scandir( dirname(__FILE__) ); //store filenames into $files_array
foreach ($files as $key => $file){
if ($file !== 'DatabaseSeeder.php' && $file[0] !== "." ){
$this->call( explode('.', $file)[0] );
}
}
}
}
PS: Если вы хотите исключить файл сеялки из этого процесса автоматического запуска, просто добавьте одну точку в начало имени файла.
PS2: Если вы хотите изменить точку Excluder характер какой - либо причине. Просто добавьте желаемый символ исключения к выражениям if (например, для символа подчеркивания && $file[0] !== "_"
). Не изменяйте $file[0] !== "."
потому что он расширяет методы scandir(). и.. папок.