Сохранить parent_id в laravel

Я новичок в Laravel, поэтому я борюсь. У меня есть система комментариев, которая отлично работала, но теперь я хочу добавить к ней и систему ответов. Поэтому я решил сделать это, добавив столбец parent_id в таблицу комментариев, а затем проверив, есть ли у комментария родитель. Но я не знаю, как именно в этом случае должен работать метод store. Вот моя база данных, настроенная для комментариев:

public function up()
{
    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();

        });
}

А теперь настройка столбца ответа:

public function up()
{
    Schema::table('comments', function (Blueprint $table) {
        $table->unsignedBigInteger('parent_id')->nullable();

        $table->foreign('parent_id')->references('id')->on('comments');
    });
}

Модель:

class Comment extends Model{
    use HasFactory;

    protected $guarded = [];

    public function post()
    {
        return $this->belongsTo(Post::class);
    }

    public function author()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function replies() {
        return $this->hasMany('App\Comment', 'parent_id');
    }
}

Контроллер:

public function store(Post $post){

    request()->validate([
        'body' => 'required'
    ]);

    $post->comments()->create([
        'user_id' => request()->user()->id,
        'parent_id' => request()->get('id'),
        'body' => request('body')
    ]);

    return back();
}

Я просто не знаю, как именно я могу получить parent_id в функции хранилища, поэтому я был бы признателен за некоторые предложения.

С вашего внешнего интерфейса вы передаете comment_id (parent_id), если это ответ.

Mihai 09.04.2022 18:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

это должен быть идентификатор комментария, который получил ответ

что-то вроде этого

$post->comments()->create([
    'user_id' => request()->user()->id,
    'parent_id' => request()->get('comment_id'),
    'body' => request('body')
]);

Я надеюсь, что это полезно

используйте код:

public function store(Post $post) {

    request()->validate([
        'body' => 'required'
    ]);

    $post->comments()->create([
        'user_id' => request()->user()->id,
        'parent_id' => request()->get('comment_id'),
        'body' => request('body')
    ]);

    return back();
}

Другие вопросы по теме