首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查Csv文件是否包含Laravel中的列?

检查Csv文件是否包含Laravel中的列?
EN

Stack Overflow用户
提问于 2021-08-09 16:28:05
回答 2查看 113关注 0票数 0

我正在使用Maatwebsite/Excel导入一个文件并将数据存储在DB中。

我想检查列registered是否在文件中,否则为它创建一个新值。我尝试了下面的代码,但是当我检查我的数据库时,我看到created_at (timestamp)列有今天的日期,而不是csv文件列上的日期。

是否是因为迁移导致行没有更新?

因为我在User迁移中使用了$table->timestamps();

代码语言:javascript
运行
复制
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';
    }
}
EN

回答 2

Stack Overflow用户

发布于 2021-08-09 16:59:48

在您的User模型中,您的created_at列质量是否可分配?我认为因为您正在使用mass assignment,所以必须将created_at列设置为mass可赋值。您可以使用guardedfillable属性来实现此目的。

您可以从Laravel文档中阅读更多信息:https://laravel.com/docs/8.x/eloquent#mass-assignment

票数 2
EN

Stack Overflow用户

发布于 2021-08-09 16:54:13

我需要在模型的$fillable中添加created_at

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68715507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档