我正试图从数据库导出/导入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
上指定fillable
或guarded
属性。这些属性是必需的,因为默认情况下,所有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质量确定