我在更新我的 Laravel 项目中的一行时遇到问题。表单完美地接收了所有必要的信息,但是一旦我点击更新按钮,从表单解析的信息返回为 null
我的编辑(表单)文件
@extends('layout')
@section('content')
<h1 class = "title">Edit Item</h1>
<form method="post" action="/listings/{{$listing->id}}">
@method('patch')
@csrf
<div>
<label class="label" for="name">Name of Item</label>
<div class="control">
<input required type="text" class="input" name="description" placeholder="Name of Item" value="{{$listing->title}}" >
</div>
</div>
<div>
{!! Form::select('lstatus',$lstatus,null) !!}
</div>
<div class="field">
<div class="control">
<button type="submit" class="button is-link">Update</button>
</div>
</div>
</form>
我的 Controller :
public function edit(listing $listing, lstatus $lstatus)
{
$listing = $listing::find($listing->id);
$lstatus = lstatus::pluck('name','id');
return view('listings.edit', compact('listing','lstatus'));
}
public function update(listing $listing, lstatus $lstatus){
$listing = listing::find($listing->id);
$listing->listing_status_id = request('lstatus');
$listing->title=\request('description');
return back();
}
当我点击表单上的提交按钮时,没有任何反应。数据库中没有任何变化,我也没有收到任何错误。
预期的结果是更新值。
最佳答案
在这种情况下,您可以使用 update()
方法将来自请求的所有输入作为参数传递给 all()
方法,这将保存所有您在请求中自动发送的属性:
$listing = $listing::find($listing->id);
$listing->update($listing->all());
You may also retrieve all of the input data as an array using the all method:
The update method expects an array of column and value pairs representing the columns that should be updated.
如果您不使用update()
方法,您应该在进行任何更改后使用save()
方法:
$listing->listing_status_id = request('lstatus');
$listing->title=\request('description');
$listing->save();
关于mysql - 如何从表格 : Laravel 5. 8 更新 mysql 表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576051/