Blog wird nicht korrekt angezeigt oder in der Datenbank gespeichert
P粉111641966
P粉111641966 2023-09-01 17:46:54
0
1
621
<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>
P粉111641966
P粉111641966

Antworte allen(1)
P粉958986070

第一种选择为了使fill方法起作用,您必须在此之后调用$blog->save()

$blog->fill($request); 
$blog->save();

另外,当您使用fill方法时,您正在进行批量赋值。默认情况下,Laravel会保护您免受批量赋值字段的影响。

打开您的Blog.php模型,并将要批量赋值的字段添加到数组$fillable

/**
 * 可以批量赋值的属性。
 *
 * @var array
 */
protected $fillable = [
    'title',
    'description',
];

第二种选择是使用update方法(不要忘记在第一种选择的模型中也添加字段到$fillable,因为update方法也是批量赋值字段):

$blog->update($request);

第三种选择是手动逐个赋值每个字段,就像在store方法中所做的那样:

$blog->title = $request->title;
 
$blog->description = $request->description;

$blog->save();
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage