Maison > Questions et réponses > le corps du texte
Je suis nouveau sur Laravel et je l'apprends de Laracast. Voici mon problème, je crée un formulaire de commentaire et son code php ressemble à ceci :
<section class="col-span-8 col-start-5 mt-10 space-y-6"> <!-- Post form --> <form method="POST" action="/post/{{ $post->slug }}/comments" class="border border-gray-200 p-6 rounded-xl"> @csrf <header class="flex items-center"> <img src="https://i.pravatar.cc/100?id={{ auth()->id() }}" alt="" width="40" height="40" class="rounded-full"> <h2 class="ml-3 ">Want to participate?</h2> </header> <div class="mt-6"> <textarea class="w-full text-sm focus:outline-none focus:ring" name="body" cols="30" rows="10" placeholder="Quick,think of something to say!" ></textarea> </div> <div> <button type="submit" class="bg-blue-500 text-white uppercase font-semi-bold text-xs py-2 px-10 rounded-2xl hover:bg-blue-600">Post</button> </div>
Voici l'itinéraire correspondant :
Route::post('post/{post:slug}/comments',[PostCommentsController::class, 'store']);
Contrôleur :, je soupçonne qu'il peut y avoir un problème ici 'user_id'=> request()->user()->id
,我尝试了多种方法来实现这种方法,例如 auth()-> id, Auth::user()->id
<?php namespace AppHttpControllers; use AppModelsPost; class PostCommentsController extends Controller { public function store(Post $post){ request()->validate([ 'body'=>'required' ]); $post->comments()->create([ 'user_id'=> request()->user()->id, 'body' => request('body') ]); return back(); } }
Voici le tableau de migration pour les commentaires
Schema::create('comments', function (Blueprint $table) { $table->id(); $table->foreignId('post_id')->constrained()->cascadeOnDelete(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->text('body'); $table->timestamps();
Tableau post migration :
Schema::create('posts', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->foreignId('category_id'); $table->string('slug')->unique(); $table->string('title'); $table->text('excerpt'); $table->text('body'); $table->timestamps(); $table->timestamp('published_at')->nullable(); });
Si je clique sur le bouton de publication, j'obtiens l'erreur ci-dessus, j'ai fait de mon mieux pour résoudre ce problème mais je ne parviens pas à le résoudre. Quelqu'un peut-il m'aider, quel est le problème avec mon code ? Ma question peut paraître naïve tant je suis nouveau dans la communauté stackoverflow
P粉9523651432023-11-06 00:33:48
Utilisez ce code pour votre contrôleur
class PostCommentsController extends Controller { public function store(Post $post){ request()->validate([ 'body'=>'required' ]); $post->comments()->create([ 'user_id'=> optional(auth()->user())->id, 'body' => request('body') ]); return back(); } }
L'utilisateur doit se connecter