如何在更新 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 表单?
Django,如何在提交表单时将 HTML 表单值传递给 URL?
Laravel 5.2:RouteCollection.php 第 219 行中的 MethodNotAllowedHttpException - 更新表单