recherche

Maison  >  Questions et réponses  >  le corps du texte

Le blog ne s'affiche pas ou n'est pas stocké correctement dans la base de données

<p>Une fois que je supprime un blog, il est complètement supprimé. Je peux créer un nouveau blog mais il n'apparaîtra pas sur le site Web ou dans la base de données. Voici mon BlogController : </p> <pre class="brush:php;toolbar:false;"><?php espace de noms AppHttpControllers ; utilisez AppModelsBlog ; utilisez IlluminateHttpRequest ; la classe BlogController étend le contrôleur { /*** Afficher la liste des ressources. * * @return IlluminateHttpResponse*/ index de fonction publique() { $blog = Blog::paginer(5); return view('blogs.index', compact('blog')) ->with('i',(request()->input('page',1)-1)*5); } /*** Afficher le formulaire de création de nouvelles ressources. * * @return IlluminateHttpResponse*/ fonction publique créer() { return view('blogs.create'); Blog::create($request->all()); return redirect()->route('blogs.index') ->with('succès','Blog créé avec succès.'); } /*** Stockez les ressources nouvellement créées dans le stockage. * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse*/ magasin de fonctions public (Requête $requête) { $request->valider([ 'titre' => 'obligatoire', 'description' => 'obligatoire', ]); $blog = nouveau blog ; $blog->titre = $requête->titre; $blog->description = $requête->description; $blog->sauvegarder(); return redirect()->route('blogs.index'); } /*** Afficher la ressource spécifiée. * * @param AppBlog $blog * @return IlluminateHttpResponse*/ spectacle de fonction publique (Blog $blog) { return view('blogs.show', compact('blog')); } /*** Afficher le formulaire de modification de la ressource spécifiée. * * @param AppBlog $blog * @return IlluminateHttpResponse*/ édition de fonction publique (Blog $blog) { return view('blogs.edit', compact('blog')); } /*** Mettez à jour la ressource spécifiée dans le stockage. * * @param IlluminateHttpRequest $request * @param AppBlog $blog * @return IlluminateHttpResponse*/ mise à jour de la fonction publique (Requête $request, Blog $blog) { $request->valider([ 'titre' => 'obligatoire', 'description' => 'obligatoire', ]); // $blog->titre = $request->titre; // $blog->description = $request->description; $blog->fill($request); //jj($blog); return redirect()->route('blogs.index') ->with('succès','Blog mis à jour avec succès'); } /** * Supprimez la ressource spécifiée du stockage.* * @param AppBlog $blog * @return IlluminateHttpResponse */ fonction publique détruire (Blog $blog) { $blog->supprimer(); return redirect()->route('blogs.index') ->with('succès','Blog supprimé avec succès'); } }</pré> <p>Le problème se produit apparemment à la ligne 103, mise à jour de la fonction publique : <code> $blog->fill($request);</code> Il n'est ni stocké dans la base de données ni dans la page Web/le blog. visible. J'ai essayé de supprimer cette ligne mais j'ai obtenu le même résultat. Rien ne change. Je ne comprends pas quel pourrait être le problème. Quelqu'un peut-il m'aider ? </p>
P粉111641966P粉111641966482 Il y a quelques jours637

répondre à tous(1)je répondrai

  • P粉958986070

    P粉9589860702023-09-02 00:26:46

    La première option est de faire fill方法起作用,您必须在此之后调用$blog->save().

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

    De plus, lorsque vous utilisez la méthode fill, vous effectuez un devoir groupé. Par défaut, Laravel vous protège des champs attribués en masse.

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

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

    La deuxième option est d'utiliser la méthode update方法(不要忘记在第一种选择的模型中也添加字段到$fillable,因为update qui est aussi un champ d'affectation par lots) :

    $blog->update($request);

    La troisième option consiste à attribuer manuellement chaque champ un par un, comme vous l'avez fait dans la méthode store :

    $blog->title = $request->title;
     
    $blog->description = $request->description;
    
    $blog->save();

    répondre
    0
  • Annulerrépondre