Laravel 检测质量分配

Laravel detect mass assigning

我在模型上定义了一个模型事件,每次创建记录时我都会添加与该记录相关的用户公司 ID。

一切正常,但我正在通过 csv 导入批量分配记录,我必须将公司 ID 设置为 null。

如何在 Laravel 中检测到我在进行大量分配?

这是我的模特活动:

protected static function boot()
    {
        parent::boot();

        static::creating(function (Product $model) {
            $model->company_owner_id = session()->get('currentCompany.id');
        });
    }

我还没有完成存储通过 CRUD 创建的记录的控制器功能,既没有 csv 导入器,也没有被所有 Laravel 应用程序强烈使用,所以我没有机会修改导入器或 CRUD表格.

在使用 csv 导入器之前,未定义模型上的 $fillable 属性。

您可以使用您的模型并将数组 ['company_owner_id'] 添加到该模型的可填充项中。如果您将创建逻辑放在导入控制器而不是服务提供者中,它只会从那里 运行。

protected static function boot()
    {
        parent::boot();

        static::creating(function (Product $model) {
            $now_fillable=['company_owner_id'];
            $model->mergeFillable($now_fillable);
            $model->company_owner_id = session()->get('currentCompany.id');
        });
    }

最后我放弃了这个并停止在记录上添加 company_id 因为我无法确定记录是通过 csv 导入还是 CRUD 形式创建的。