如何更新 Laravel 中的现有列
Posted
技术标签:
【中文标题】如何更新 Laravel 中的现有列【英文标题】:How can I update an exiting column on Laravel 【发布时间】:2020-12-12 13:09:53 【问题描述】:我有一个页面,我可以使用 Summernote 添加内容。但是当我更新内容时,没有任何变化。
这是我的 StoreController。
public function store(Request $request)
$detail=$request->content;
$dom = new DOMDocument();
$dom->loadhtml($detail, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getelementsbytagname('img');
foreach($images as $k => $img)
$data = $img->getattribute('src');
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$image_name= time().$k.'.png';
$path = public_path('uploads') .'/'. $image_name;
file_put_contents($path, $data);
$img->removeattribute('src');
$img->setattribute('src', 'uploads'.'/'.$image_name);
$detail = $dom->savehtml();
$abouts = new about;
$abouts->content = $detail;
$abouts->save();
return view('admin.about',compact('abouts'));
这是我的更新控制器
public function update(Request $request)
if($request->isMethod('POST'))
//in this section all code are same as like as my store controller
$abouts->update();
return view('admin.about',compact('abouts'));
关于如何解决此问题的任何想法?
【问题讨论】:
你正在创建 about 的新实例 如果在控制器的 update 方法中创建新实例是正确的,那么你应该检查 about 模型并确保它有可用的 $fillable 数组。 是的,它已经保护了 $fillable =['content']; 你做dd($detail)的时候,有数据吗? 请执行 dd() 并检查当您尝试存储数据时发生了什么,您会确切知道 【参考方案1】:如果您在请求中获取数据或不使用dd()
方法,最好的解决方案是先对其进行测试。或
你可以试试这个:
public function update(Request $request)
if($request->isMethod('PUT'))
//in this section all code are same as like as my store controller
$abouts->update();
return view('admin.about',compact('abouts'));
或者您可以删除 if 条件并尝试
public function update(Request $request)
//in this section all code are same as like as my store controller
$abouts->update();
return view('admin.about',compact('abouts'));
【讨论】:
我也试试这个方法@Naveed Ali【参考方案2】:在您的商店功能中,您使用了这个$abouts = new about;
你在更新函数中做同样的事情吗?那么它将是一个新实例。
添加验证可以帮助您了解未更新的原因。
\Log::debug('message');
如果您在进行验证后仍然没有遇到问题,也很有用。
public function update($id, Request $request)
//you can pass $id of the record which you want to update or even pass it along with the other request parameters.
$task = Task::findOrFail($id);
//validate the request( would suggest to do the same in your store function too. )
$this->validate($request, [
'title' => 'required',
'description' => 'required'
]);
$input = $request->all();
$task->fill($input)->save();
Session::flash('flash_message', 'Task successfully added!');
return redirect()->back();
【讨论】:
以上是关于如何更新 Laravel 中的现有列的主要内容,如果未能解决你的问题,请参考以下文章