LARAVEL8: Cuba untuk mengakses sifat 'id' pada Null
P粉794851975
P粉794851975 2023-11-05 13:06:23
0
1
668

Saya baru menggunakan Laravel dan saya mempelajarinya daripada Laracast. Inilah masalah saya, saya sedang mencipta borang komen dan kod phpnya kelihatan seperti ini:

<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>

Ini ialah laluan yang sepadan:

Route::post('post/{post:slug}/comments',[PostCommentsController::class, 'store']);

Pengawal:, Saya syak mungkin ada masalah di sini '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();
    }
}

Ini ialah jadual migrasi untuk ulasan

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

Jadual migrasi selepas:

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

Jika saya mengklik butang terbitkan saya mendapat ralat di atas, saya cuba sedaya upaya untuk membetulkannya tetapi saya tidak dapat menyelesaikannya. Bolehkah seseorang membantu saya apa yang salah dengan kod saya? Soalan saya mungkin kelihatan naif kerana saya baru dalam komuniti stackoverflow

P粉794851975
P粉794851975

membalas semua(1)
P粉952365143

Gunakan kod ini untuk pengawal anda

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

Pengguna mesti log masuk

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan