Это прекрасно работает:
$post->comments()->withTrashed()->get()->each->delete();
Так как действительно удаляет 6 строк, each
возвращается как коллекция.
Однако это вызывает исключение:
$post->comments()->withTrashed()->get()->each->restore();
Я заметил, что он также восстановил 1 строку (первую строку) в базе данных (коллекция имеет 6 строк).
Контекст: я использую такой код в Observer для восстановления комментариев при восстановленииPost.
Следующее будет выдавать точно такое же исключение InvalidArgumentException with message 'Illegale operator and value combination.'
:
$post->comments()->withTrashed()->where('deleted_at', '>=', $post->deleted_at)->get()->each->restore();
Условие where()
позволяет мне восстанавливать только комментарии, программно удаленные вместе с программным удалением сообщения (так, чтобы онотакже не восстанавливать комментарии, удаленные модераторами до полного удаления сообщения).