我正在使用Maatwebsite/Excel导入一个文件并将数据存储在DB中。
我想检查列registered是否在文件中,否则为它创建一个新值。我尝试了下面的代码,但是当我检查我的数据库时,我看到created_at (timestamp)列有今天的日期,而不是csv文件列上的日期。
是否是因为迁移导致行没有更新?
因为我在User迁移中使用了$table->timestamps();。
class UsersImport implements ToModel, WithCustomCsvSettings, WithHeadingRow, WithUpserts
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new User([
'firstname' => $row['firstname'],
'lastname' => $row['lastname'],
'email' => $row['email'],
'password' => $row['pass'],
'created_at' => !empty($row['registered']) ? Carbon::parse($row['registered']) : Carbon::now(),
]);
}
public function getCsvSettings(): array
{
return [
'delimiter' => ","
];
}
public function uniqueBy()
{
return 'email';
}
}发布于 2021-08-09 16:59:48
在您的User模型中,您的created_at列质量是否可分配?我认为因为您正在使用mass assignment,所以必须将created_at列设置为mass可赋值。您可以使用guarded或fillable属性来实现此目的。
您可以从Laravel文档中阅读更多信息:https://laravel.com/docs/8.x/eloquent#mass-assignment
发布于 2021-08-09 16:54:13
我需要在模型的$fillable中添加created_at
https://stackoverflow.com/questions/68715507
复制相似问题