Когда вы делаете это так, $categories[] = $product->categories()->first();
$product->categories()
создает новый экземпляр построителя запросов.
Если вы хотите получить доступ к отношению с 1 запросом, вам необходимо назовите его методом
$product->categories
таким образом вы получите коллекцию всех категорий.
Если вы хотите, чтобы все категории для определенного c продукта, сделайте это так:
$product = Product::find(1);
-> это всего лишь пример получения продукта с ID 1.
Тогда вам нужны все категории этого продукта.
$product->categories
-> Categories is ваши отношения в модели продукта, мы называем его METHOD
, а не FUNCTION
.
return view('products',[
'product' => $product,
'categories' => $product->categories
]);