cari

Rumah  >  Soal Jawab  >  teks badan

LARAVEL8: Cuba untuk mengakses sifat 'id' pada Null

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粉794851975P粉794851975405 hari yang lalu685

membalas semua(1)saya akan balas

  • P粉952365143

    P粉9523651432023-11-06 00:33:48

    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

    balas
    0
  • Batalbalas