Ничего странного — волшебных сил электричества не существует и проблема всегда в коде. Проблемы с таймзоной это одно, а вот «замороженных» минут просто быть не может.
Там, я так понимаю, примерно дублируется код шаблона. Тогда запрос инициируется вот этой проверкой: @if (count($item->children) > 0)
Вы в контроллере грузите детей, а потом в цикле проверяете наличие детей у этих детей.
Если у вас только два уровня вложенности, передавайте в паршиал флаг, что это последний уровень или вообще уберите оттуда итерирование по детям.
Если вложенность неограниченная, то при такой структуре данных загрузить всё стандартным функционалом не выйдет.
Но можно указать столько уровней, сколько есть обычно: BookCategory::with('children.children.children').
Или выбирать все категории плоским списком, а дерево строить рекурсивно уже в контроллере.
Ну а лучше совсем поменять структуру хранения и использовать, например, nested set.