如何在更新 Laravel 中的记录时将表单发布数据加载到模型中

Posted

技术标签:

【中文标题】如何在更新 Laravel 中的记录时将表单发布数据加载到模型中【英文标题】:How can I load form post data into a model while updating a record in Laravel 【发布时间】:2016-04-07 23:46:56 【问题描述】:

我正在尝试使用表单中的发布数据更新记录。每次我手动将表单中的值分配给模型并保存记录时。

$model = CondoFacilities::find($id);

$model->facility_title = Input::get('facility_title');
$model->facility_description = Input::get('facility_description');
$model->facility_image = $imageName;

$status = $model->save();

有没有办法将表单数据分配给模型并在 Laravel 中保存/更新记录?和YII2中的类似:

$model = $this->findModel($id);

if ($model->load(Yii::$app->request->post())) 
    $model->save();

我是 Laravel 的新手,希望 Laravel 也可以使用这个很棒的功能。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

为了创建模型并将其存储在数据库中,您可以直接在模型上使用create 方法,如下所示:

YourModel::create($request->all());

其中$request->all() 是表单的发布请求,其中包含您希望创建的值并将其保存在数据库中。

同样,更新模型,需要先找到模型:

$model = YourModel::find($id);

其中$id 是您希望更新的模型的无符号整数。

$model->update($request->all());

当然你也可以像这样内联更新方法:

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

阅读更多关于Eloquent和Requests的信息

希望这对您有所帮助。快乐编码。干杯。

【讨论】:

感谢您的回复。如果我想手动分配单个列并将其余表单值保存为: $model->facility_image = $imageName; $model->update($request->all()); 您可以使用$request['yourColumnName'] = YourValue;,其中yourColumnName存在于模型的$fillable数组中,也存在于数据库表中。 我使用了$request['condo_facility_image'] = $imageName;,其中condo_facility_image 是表单中的文件ID,并在更新后尝试更新$model->update($request->all());,值不是$imageName,而是来自表单文件。所以我将表单id重命名为condo_facility_image_temp,更新后的值为$imageName。这个程序可以吗? 我不知道你的表格里有什么。因此,除非您更新您的问题以显示表单代码,否则我对您的帮助最少。.. 我猜我遵循的程序是正确的,我得到了预期的输出。您的回答帮助了我:) 再次感谢您。

以上是关于如何在更新 Laravel 中的记录时将表单发布数据加载到模型中的主要内容,如果未能解决你的问题,请参考以下文章

如何更新 laravel 中的 master 和 detail 表单?

在同一视图中使用多个模型时将表单数据传递给模型

更新 laravel 关系中的许多记录

Django,如何在提交表单时将 HTML 表单值传递给 URL?

在 laravel 中更新时,我的选择表单返回 null

Laravel 5.2:RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException - 更新表单