Что плохо в вашем коде, так это то, что вы создаете запрос базы данных, но не выполняете его:
// You forgot the ->get() following the where statement
foreach ($comments as $comment)
$post_comment_reply = Reply::where('comment_id', $comment->id)->get();
$post_comment_reply->delete();
}
Однако код в целом не совсем оптимален, вы можете сделать это непосредственно на уровне базы данных с помощью onDelete ('cascade'), или просто создайте запрос на удаление ответов, не извлекая их и уменьшая количество запросов до БД, например, так:
foreach ($comments as $comment)
Reply::where('comment_id', $comment->id)->delete();
}
Еще один шаг к дальнейшему сокращению запросов БД, как предложено выше:
Reply::whereIn('comment_id', $comments->pluck('id'))->delete();