вы можете использовать $ faker-> numberBetween, чтобы получить случайный элемент из массива $ категорий, а затем использовать его внутри фабрики:
$categories = ['category', 'category-2', 'category-3'];
$factory->define(Category::class, function (Faker $faker)use($categories) {
$categoryName= $categories[$faker->numberBetween(0,count($categories)-1)];
return [
'name' =>$categoryName,
'slug' => Str::slug($categoryName),
];
});
edit:
, если вы хотите сгенерировать уникальный имена категорий
first: стандартная фабрика категорий:
$factory->define(Category::class, function (Faker $faker){
return [
'name' =>$faker->name,
'slug' => Str::slug($faker->text(12))
];
});
до тех пор, пока вы сами передаете заводские поля, нет необходимости беспокоиться о совместимости имени категории и слагов ....
секунда:
теперь, когда вы создаете свои категории, вы передаете нужные атрибуты, например:
в сеялке базы данных:
use use Faker\Generator;
. ...... .......
$counter=0;
while($counter<20)
{
$categoryName=$faker->text(12);
if(Category::firstWhere('name',$categoryName)==null)
{
$counter+=1;
factory(Category::class)->create(['name'=>$categoryName,'slug'=>Str::slug($categoryName)]);
}
}
не используйте напрямую factory ('App \ Category', 20) -> create (); без параметра он вам не поможет ...