为了账号安全,请及时绑定邮箱和手机立即绑定

如何在laravel中将数组插入数据库而不出错

如何在laravel中将数组插入数据库而不出错

PHP
泛舟湖上清波郎朗 2023-11-03 20:34:02
我有一个 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]        );                        }}但有错误如何清除此错误TypeErrorArgument 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
查看完整描述

4 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

尝试这样


$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


查看完整回答
反对 回复 2023-11-03
?
慕后森

TA贡献1802条经验 获得超5个赞

$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);


查看完整回答
反对 回复 2023-11-03
?
明月笑刀无情

TA贡献1828条经验 获得超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


查看完整回答
反对 回复 2023-11-03
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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

或使用批量插入:

模型::插入($insertableData);


查看完整回答
反对 回复 2023-11-03
  • 4 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信