Причина добавления отношения product
при возврате счета-фактуры заключается в том, что вы вызываете следующее:
$product = $invoice->product;
Это происходит потому, что Laravel загружает отношение при его вызове и сохраняя его с моделью счета. Это делается для того, чтобы при повторном вызове product
для того же экземпляра этого объекта он не выполнял другой запрос к базе данных.
В результате он возвращает модель счета-фактуры с уже загруженным отношением. Либо не загружайте отношение продукта (зависит от того, нужно оно вам или нет), либо IIR C, вы можете скрыть отношение при возврате, чтобы оно просто возвращало модель счета. Вы должны быть в состоянии сделать что-то вроде этого:
return $invoice->makeHidden('product');