【问题标题】:How to: mass assign an update in Laravel 4?如何:在 Laravel 4 中批量分配更新?
【发布时间】:2013-06-09 04:40:03
【问题描述】:

这是一个内部应用程序,在这种情况下批量分配安全不是问题。

我正在处理非常大(大量)的表单字段,因此批量分配用户编辑会很棒。批量分配似乎适用于“create()”,但不适用于查找和保存。

这就是我所拥有的:

$post_data = Input::all();
$formobj = HugeForm::find($id);
$formobj->save($post_data);

我该怎么做?我宁愿不指定几十个表单输入。

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    你应该可以使用fill(array $attributes)...

    $post_data = Input::all();
    $formobj = HugeForm::find($id);
    $formobj->fill($post_data);
    $formobj->save();
    

    【讨论】:

    • 它还在API docs for 5.2,还有很多基本文档中没有涉及到,也许你可以向维护者推荐这个添加?
    【解决方案2】:

    如果是大规模更新,它可以写得更短。

    $post_data = Input::all();
    HugeForm::find($id)->update($post_data);
    

    【讨论】:

    • update 不会创建新记录,而 save 方法将创建一个新行(如果它不存在)并更新现有行。
    【解决方案3】:

    要允许在 Laravel 中进行批量分配,您需要添加:

    protected $guarded = array();
    

    进入你的模型。基本上这告诉 laravel 不要保护任何字段,你也可以使用:

    protected $fillable = array();
    

    然后设置你想要填写的字段。

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      这对我来说只有 1 行(Laravel 8):

      #ModelName::find($id)->update($request->all());

      【讨论】:

        猜你喜欢
        • 2014-07-15
        • 2014-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多