博客未在数据库中正确显示或存储
P粉111641966
2023-09-01 17:46:54
<p>一旦我删除了一个博客,它就完全被删除了。我可以创建一个新的博客,但它不会显示在网站或数据库中。这是我的BlogController:</p>
<pre class="brush:php;toolbar:false;"><?php
namespace App\Http\Controllers;
use App\Models\Blog;
use Illuminate\Http\Request;
class BlogController extends Controller
{
/*** 显示资源列表。
*
* @return \Illuminate\Http\Response*/
public function index()
{
$blog = Blog::paginate(5);
return view('blogs.index', compact('blog'))
->with('i',(request()->input('page',1)-1)*5);
}
/*** 显示创建新资源的表单。
*
* @return \Illuminate\Http\Response*/
public function create()
{
return view('blogs.create');
Blog::create($request->all());
return redirect()->route('blogs.index')
->with('success','博客创建成功。');
}
/*** 在存储中存储新创建的资源。
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response*/
public function store(Request $request)
{
$request->validate([
'title' => 'required',
'description' => 'required',
]);
$blog = new Blog;
$blog->title = $request->title;
$blog->description = $request->description;
$blog->save();
return redirect()->route('blogs.index');
}
/*** 显示指定的资源。
*
* @param \App\Blog $blog
* @return \Illuminate\Http\Response*/
public function show(Blog $blog)
{
return view('blogs.show', compact('blog'));
}
/*** 显示编辑指定资源的表单。
*
* @param \App\Blog $blog
* @return \Illuminate\Http\Response*/
public function edit(Blog $blog)
{
return view('blogs.edit', compact('blog'));
}
/*** 更新存储中的指定资源。
*
* @param \Illuminate\Http\Request $request
* @param \App\Blog $blog
* @return \Illuminate\Http\Response*/
public function update(Request $request, Blog $blog)
{
$request->validate([
'title' => 'required',
'description' => 'required',
]);
// $blog->title = $request->title;
// $blog->description = $request->description;
$blog->fill($request);
// dd($blog);
return redirect()->route('blogs.index')
->with('success','博客更新成功');
}
/**
* 从存储中删除指定的资源。*
* @param \App\Blog $blog
* @return \Illuminate\Http\Response
*/
public function destroy(Blog $blog)
{
$blog->delete();
return redirect()->route('blogs.index')
->with('success','博客删除成功');
}
}</pre>
<p>问题显然出现在第103行,public function update:<code> $blog->fill($request);</code> 它既不存储在数据库中,也不在网页/博客中可见。我尝试删除那一行,但结果相同。没有任何变化。我不明白问题可能是什么。有人可以帮忙吗?</p>
第一种选择为了使
fill
方法起作用,您必须在此之后调用$blog->save()
。另外,当您使用
fill
方法时,您正在进行批量赋值。默认情况下,Laravel会保护您免受批量赋值字段的影响。打开您的
Blog.php
模型,并将要批量赋值的字段添加到数组$fillable
中第二种选择是使用
update
方法(不要忘记在第一种选择的模型中也添加字段到$fillable
,因为update
方法也是批量赋值字段):第三种选择是手动逐个赋值每个字段,就像在
store
方法中所做的那样: