Blog wird nicht korrekt angezeigt oder in der Datenbank gespeichert
P粉111641966
2023-09-01 17:46:54
<p>Sobald ich ein Blog lösche, wird es vollständig gelöscht. Ich kann ein neues Blog erstellen, aber es wird nicht auf der Website oder in der Datenbank angezeigt. Das ist mein BlogController: </p>
<pre class="brush:php;toolbar:false;"><?php
Namespace AppHttpControllers;
verwenden Sie AppModelsBlog;
benutze IlluminateHttpRequest;
Die Klasse BlogController erweitert Controller
{
/*** Ressourcenliste anzeigen.
*
* @return IlluminateHttpResponse*/
öffentliche Funktion index()
{
$blog = Blog::paginate(5);
return view('blogs.index', compact('blog'))
->with('i',(request()->input('page',1)-1)*5);
}
/*** Zeigen Sie das Formular zum Erstellen neuer Ressourcen an.
*
* @return IlluminateHttpResponse*/
öffentliche Funktion create()
{
return view('blogs.create');
Blog::create($request->all());
Return Redirect()->route('blogs.index')
->with('success','Der Blog wurde erfolgreich erstellt.');
}
/*** Speichern Sie neu erstellte Ressourcen im Speicher.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse*/
öffentlicher Funktionsspeicher (Request $request)
{
$request->validate([
'title' => 'erforderlich',
'description' => 'erforderlich',
]);
$blog = neues Blog;
$blog->title = $request->title;
$blog->description = $request->description;
$blog->save();
Return Redirect()->route('blogs.index');
}
/*** Zeigt die angegebene Ressource an.
*
* @param AppBlog $blog
* @return IlluminateHttpResponse*/
Öffentliche Veranstaltungsshow(Blog $blog)
{
return view('blogs.show', compact('blog'));
}
/*** Zeigt das Formular zum Bearbeiten der angegebenen Ressource an.
*
* @param AppBlog $blog
* @return IlluminateHttpResponse*/
öffentliche Funktion bearbeiten(Blog $blog)
{
return view('blogs.edit', compact('blog'));
}
/*** Aktualisieren Sie die angegebene Ressource im Speicher.
*
* @param IlluminateHttpRequest $request
* @param AppBlog $blog
* @return IlluminateHttpResponse*/
öffentliche Funktionsaktualisierung (Request $request, Blog $blog)
{
$request->validate([
'title' => 'erforderlich',
'description' => 'erforderlich',
]);
// $blog->title = $request->title;
// $blog->description = $request->description;
$blog->fill($request);
//dd($blog);
Return Redirect()->route('blogs.index')
->with('success','Blog erfolgreich aktualisiert');
}
/**
* Entfernen Sie die angegebene Ressource aus dem Speicher.*
* @param AppBlog $blog
* @return IlluminateHttpResponse
*/
öffentliche Funktion zerstören(Blog $blog)
{
$blog->delete();
Return Redirect()->route('blogs.index')
->with('success','Blog erfolgreich gelöscht');
}
}</pre>
<p>Das Problem tritt offenbar in Zeile 103 auf, öffentliche Funktionsaktualisierung: <code> $blog->fill($request);</code> Es wird weder in der Datenbank noch in der Webseite/dem Blog gespeichert sichtbar. Ich habe versucht, diese Zeile zu entfernen, habe aber das gleiche Ergebnis erhalten. Nichts verändert sich. Ich verstehe nicht, was das Problem sein könnte. Kann jemand helfen? </p>
第一种选择为了使
fill
方法起作用,您必须在此之后调用$blog->save()
。另外,当您使用
fill
方法时,您正在进行批量赋值。默认情况下,Laravel会保护您免受批量赋值字段的影响。打开您的
Blog.php
模型,并将要批量赋值的字段添加到数组$fillable
中第二种选择是使用
update
方法(不要忘记在第一种选择的模型中也添加字段到$fillable
,因为update
方法也是批量赋值字段):第三种选择是手动逐个赋值每个字段,就像在
store
方法中所做的那样: