停止尝试保存到数据库laravel的所有可填写项目

时间:2017-05-23 21:44:41

标签: php laravel laravel-5

我的表单中包含一些项var A = class A {}; var B = class B extends A {}; var C = class C extends B {}; var proto = C.prototype; while (proto !== Object.prototype) { console.log(proto.constructor.name, proto.constructor); proto = Object.getPrototypeOf(proto); } firstnamesurname

在我的模特中我有

checkbox

$fillable = [firstname, surname, checkbox]

在我的数据库中只包含$appends = [checkbox]firstname

复选框的目的是在观察者中发出保存信息。

我想使用质量分配来设置所有这些项目。

但是,在保存模型时,它会尝试将surname保存在数据库中。

如何克服这个?

我不想单独用checkbox分配它,因为我最终会有很多不同的项目。

2 个答案:

答案 0 :(得分:0)

我使用的是基于Laravel的10月CMS,它们具有Purgeable特征。

这会在将数据保存到数据库之前删除值。它可能需要为您的目的进行一些修改,但它可能是一个开始的好地方。

https://octobercms.com/docs/database/traits#purgeable https://github.com/octobercms/library/blob/master/src/Database/Traits/Purgeable.php

答案 1 :(得分:0)

据我了解,您想要为模型执行动态属性, 您可以通过以下方式完成:

  • metadata创建另一个表格,其中包含以下列:keyvaluemodel_id
  • 使用Metadata创建$fillable = ['key', 'value']模型。
  • 使用hasMany模型在默认模型中添加Metadata关系。
  • 使用额外属性键创建一个数组

    $metadata = ['checkbox', 'foo', 'bar'];
    
  • 在数组上执行循环并保存值

    foreach($metadata as $key) {
        $model->metadata()->create([
            'key'   => $key,
            'value' => Request::get($key)
        ]);
    }