Laravel-根据不同的配置更新$ guarded数组

时间:2018-09-24 11:05:51

标签: php laravel laravel-5

我有一个模型,一个控制器和多种配置。

如果我使用的是配置#1,则我的模型$guarded属性应该是

$guarded = ['foo', 'bar'];

如果我使用的是配置2,则我的模型$guarded属性应该仅为

$guarded = ['foo'];

加载的配置取决于域/子域。

在我的控制器中,我有一个导入函数,该函数接受数据数组。大约4个字段需要转到所有配置共有的一个表,其余值(根据加载的配置而变化)需要进入单独的数据透视表。因此,一个配置可能有8个字段,而另一个配置可能有9个或更多/更少。

我试图从插入到第一张表的插入中删除变量字段,并使用类似于此处代码的方法进行保护。之后,我将变量字段插入到另一个表中。

protected $guarded = ['some', 'common', 'guarded', 'fields'];

function __construct()
{
    $this->guarded = array_merge($this->guarded, config('custom_fields_for_domain'));
}

虽然我可以直接dd($this->guarded)之后并在模型中正确看到变量字段,但是在尝试导入第一个表时仍然收到错误,因为它仍在尝试导入所有变量字段,而不是仅导入4个变量字段。所以我想要的字段。

如果我手动添加所有变量字段,则可以正常工作,因此似乎早在构造函数中修改$guarded似乎都不起作用。这个正确吗?是否有更好的方法可以根据不同的配置来修改$guarded值?

我还没有尝试过,但是对于我知道是恒定的字段,使用$fillable会更好吗?

0 个答案:

没有答案