Сохранить 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
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Что нового в PHP 8.1?
Что нового в PHP 8.1?
Если вы все еще используете PHP 7, то эта статья для вас. В PHP 8, а именно в PHP 8.1, встроены некоторые очень востребованные функции, которые вам...
Разработка LMS на заказ для повышения эффективности работы и обучения
Разработка LMS на заказ для повышения эффективности работы и обучения
За последние годы в образовании произошла большая революция, и сегодня почти все учебные заведения делают упор на эксклюзивное управление учебным...
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();
}

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