【问题标题】:how to insert array into database in laravel without error如何在laravel中将数组插入数据库而不会出错
【发布时间】:2020-12-16 02:25:36
【问题描述】:

我有一个 excel 文件,我从 excel 构建了一个数组,我需要在 laravel 中将数组插入到数据库中,但是 laravel 有错误我的数组是

private function InsertInDatabase(): void
{
    $insertableData = [
        ['name' => 'joe', 'card_type' => 'mastercard', 'balance' => 100 , 'last_ip'=> '122.154.1.5'],
        ['name' => 'sara', 'card_type' => 'visa', 'balance' => 10 , 'last_ip'=> '125.194.11.150'],
    ];
        
    $arrayCount = count($insertableData);

    for ( $l = 0; $l <= $arrayCount; $l++ )
    {

        
        Database::table($this->dbname)->insert(
            $insertableData[$l]
        );
        
            
    }
}

但是有错误我该如何清除这个错误

TypeError
Argument 1 passed to Illuminate\Database\Query\Builder::insert() must be of the type array, null given, called in C:\xampp\htdocs\xlsfile\app\Excel\ExcelToDatabase.php on line 99

【问题讨论】:

  • $arraylist 是什么?它是在哪里声明的?
  • 您的代码看起来不错。你能告诉我们你是如何从 Excel 构建数组的吗?
  • 对不起,我无法显示主要的 excel 数据

标签: php arrays database laravel


【解决方案1】:

$arraylist[$l] 必须是 $insertableData[$l]

或使用批量插入:

模型::插入($insertableData);

【讨论】:

  • 更好地使用批量插入:Model::insert($data);
【解决方案2】:

这样试试

$data = [
    [...], [...]
]

foreach($data as $item) {
     YourModel::create($item); // YourModel::insert($item);
     //Database::table($this->dbname)->insert($item);
}

或批量插入

YourModel::insert($data); <-- Eloquent
// DB::table($this->dbname)->insert($data); <-- Query Builder

【讨论】:

    【解决方案3】:

    代码中没有$arraylist 变量。我想你的意思是$insertableData。如果是,请将$arraylist 替换为$insertableData


    你实际上并不需要循环:

    $insertableData = [
            ['name' => 'joe', 'card_type' => 'mastercard', 'balance' => 100 , 'last_ip'=> '122.154.1.5'],
            ['name' => 'sara', 'card_type' => 'visa', 'balance' => 10 , 'last_ip'=> '125.194.11.150'],
        ];
    
    DB::table($this->dbname)->insert($insertableData);
    

    【讨论】:

      【解决方案4】:

      使用 Eloquent 或查询构建器在 Laravel 中进行批量插入非常容易。

      您可以使用以下方法。

       $data = [
              ['user_id'=>'Coder 1', 'subject_id'=> 4096],
              ['user_id'=>'Coder 2', 'subject_id'=> 2048],
              //...
          ];
      
          Model::insert($data); // Eloquent approach
          DB::table('table')->insert($data); // Query Builder approach
      

      【讨论】:

        猜你喜欢
        • 2020-05-01
        • 1970-01-01
        • 2021-10-27
        • 2018-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-14
        • 2015-12-03
        相关资源
        最近更新 更多