Как сделать приватные поля в ларавеле?
Это потому что вы пытаетесь делать то, что не понимаете, но прочитали в умной книжке/статье, увидели на ютубе.
джедай режим / Не нужно поля приватными делать в модели твоей.

Не пытайтесь делать то, что не понимаете, через лет 5 будет понятно, а пока делайте как в доках написано, про простому.
А бизнес логику в отдельные классы выносите. Пока ПО для боингов писать не начнёте, вам хватит.

А если уж так важно всё тру вей писать, то лару сразу надо удалить, качать симфони и пытаться превозмогать там.
UPD Как правильно заметил товарищ vism я тут немного чуши написал по инерции. Не посмотрел куда дал ссылку.  Там в примере главная проблема что человек из репозитория снова таки возвращает саму элокуент модель, а хорошо бы DTO - Data Transfer Object. Посмотрите пакет от Spatie https://github.com/spatie/data-transfer-object.

А в целом ответить на ваш вопрос легче было, если был бы ясен контекст. Зачем приватные поля? Возможно все проще перевести в данные у вас, и это логику "защиты" перенести на уровень валидации. Тогда и ставить ничего не нужно, просто в валидации, где нужно, проверяйте входящие данные и выкидывайте ошибку. Здесь будет и гибкость(где нужно разные влаидаторы) и "магия" Ларавел в целом сохраняется коробочная.
/---
Это потому, что Laravel  в качестве ORM использует Eloquent, который  сделан по паттерну ActiveRecord. Многие считают его антипаттерном. Оставим срачи за рамками.
Вам подойдёт внедрения подхода с паттерном репозитория .
Вот простой пример, будет понятно куда копать и как действовать:
https://www.twilio.com/blog/repository-pattern-in-...