Laravel:导入excel到数据库时出错



我正试图从数据库导出/导入Excel文件。为此,我看了一些教程。所有人的表现都是一样的。以下是链接。

  • https://www.laravelcode.com/post/laravel-8-excel-and-csv-import-export-to-database-using-maatwebsite-excel-with-example
  • https://www.itsolutionstuff.com/post/laravel-8-import-export-excel-and-csv-file-tutorialexample.html

和其他。

从数据库导出excel工作正常。我只在导入时得到错误。

在这两个教程中,他们展示了相同的导入代码的方法,如下所示

public function model(array $row) {
return new product([
'vendor_id'    => $row[0],
'product_name'    => $row[1],
'product_price'    => $row[2],
'product_model'    => $row[3],
'created_at'    => $row[4],
'updated_at'    => $row[5],
]);  
}

当我试图导入excel时,它给了我这个错误。

Add [vendor_id] to fillable property to allow mass assignment on [AppModelsproduct].

我试着搜索关于可填充的,并找到了一些解决方案。我试图应用它,但错误没有得到解决。知道我哪里做错了吗?

更新

产品型号文件代码

<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
class product extends Model {
use HasFactory;
}

您需要在model class上指定fillableguarded属性。这些属性是必需的,因为默认情况下,所有Eloquent models都受mass assignment漏洞的保护。

当用户传递一个意外的HTTP请求字段并且该字段更改了数据库中您没有预料到的列时,就会发生大规模分配漏洞。例如,恶意用户可能通过HTTP请求发送is_admin参数,然后将其传递给模型的create方法,从而允许用户将自己升级为管理员。

如果你没有指定$guarded属性,那么所有的字段都需要在$fillable属性中提到。

protected $fillable = ['vendor_id',
'product_name',
'product_price',
'product_model',
];

protected $guarded=['id']

裁判:https://laravel.com/docs/8.x/eloquent质量确定

最新更新