Heim > Fragen und Antworten > Hauptteil
Ich bin neu bei Laravel und lerne es von Laracast. Hier ist mein Problem: Ich erstelle ein Kommentarformular und sein PHP-Code sieht so aus:
<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>
Dies ist die entsprechende Route:
Route::post('post/{post:slug}/comments',[PostCommentsController::class, 'store']);
Controller: Ich vermute, dass hier ein Problem vorliegt '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(); } }
Dies ist die Migrationstabelle für Kommentare
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();
Post-Migrationstabelle:
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(); });
Wenn ich auf die Schaltfläche „Veröffentlichen“ klicke, erhalte ich die obige Fehlermeldung. Ich habe mein Bestes gegeben, um das Problem zu beheben, aber ich kann es nicht lösen. Kann mir jemand helfen, was mit meinem Code nicht stimmt? Meine Frage mag naiv erscheinen, da ich neu in der Stackoverflow-Community bin
P粉9523651432023-11-06 00:33:48
将此代码用于控制器
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(); } }
用户必须登录