Laravel 7:如何在数据播种器阵列中使用

Laravel 7:如何在数据播种器阵列中使用,laravel,eloquent,Laravel,Eloquent,如何使用数据库种子机使用自定义数组进行不同的插入 使用以下代码: $categories=[‘硬件’、‘软件’、‘规划’、‘工具’]; foreach($categories作为$category){ App\Category::insert([ “名称”=>$category, 'slug'=>Str::slug($category), ]); } 如果我使用insert或create的话,如果没有一个类别的工厂,它就无法工作 它给出了这个错误 找不到[App\Category]的工厂。 位

如何使用数据库种子机使用自定义数组进行不同的插入

使用以下代码:

$categories=[‘硬件’、‘软件’、‘规划’、‘工具’];
foreach($categories作为$category){
App\Category::insert([
“名称”=>$category,
'slug'=>Str::slug($category),
]);
}
如果我使用
insert
create
的话,如果没有一个类别的工厂,它就无法工作

它给出了这个错误

找不到[App\Category]的工厂。
位于vendor/laravel/framework/src/illumb/Database/elount/FactoryBuilder.php:273
269|      */
270 |受保护的函数getRawAttributes(数组$attributes=[])
271|     {
272 |如果(!isset($this->definitions[$this->class])){
>273 |抛出新的InvalidArgumentException(“无法找到[{$this->class}]的工厂”);
274|         }
275| 
276 |$definition=调用用户函数(
277 |$this->definitions[$this->class],
谢谢

尝试使用witch,将数组作为参数:

public function run()
    {
        $inputs[] = ['name'=> 'Hardware'];
        $inputs[] = ['name'=> 'Software'];
        $inputs[] = ['name'=> 'Planning'];
        $inputs[] = ['name'=> 'Tools'];

        App\Category::insert($inputs);
       
    }
或者你可以用另一种方式:

  public function run()
    {
     $inputsNames = ['Hardware', 'Software', 'Planning', 'Tools'];
     foreach($inputsNames  as $categoryName)
       {
          $inputs[]=['name'=>$categoryName];
       }    
      App\Category::insert($inputs);   
     }

在播种器文件的run方法中创建数据数组

public function run()
{
    $categories = [
        ['name' => 'Music'],
        ['name' => 'Gaming'],
        ['name' => 'Entertainment'],
        ['name' => 'Non-Profit & Activism'],
        ['name' => 'Other'],
    ];
    foreach ($categories as $category) {
        Category::create($category);
    }
}
您正在将所有数据推送到模型中,因此需要在模型中设置可填充或保护

class Category extends Model
{
      protected $guarded = [];
}

您需要添加与
列名相同的
,例如:
['name'=>'Hardware']
问题是如果没有工厂,它会抛出一个错误。看看我更新的帖子,没有工厂是不行的。但是在文档中找不到真正的解决方案。更新方法没有工厂也行,无论如何,请分享你的播种机代码我没有足够清楚地解释我的问题,因为我不理解我遇到的错误,我的问题我使用facker在post factory中生成了一个类别id。类似于这样的
php'category\u id'=>factory(category::class)->create()->id,
,正如您所看到的,我的post factory依赖于一个类别工厂。