LARAVEL8: Versucht, auf die Eigenschaft „id' auf Null zuzugreifen
P粉794851975
P粉794851975 2023-11-05 13:06:23
0
1
688

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粉794851975
P粉794851975

Antworte allen(1)
P粉952365143

将此代码用于控制器

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();
}
}

用户必须登录

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage