Если я правильно понимаю, вы хотите иметь доступ к атрибуту с именем "categoryName" непосредственно из объекта продукта.Для этого просто установите средство получения атрибутов в модели Product.php, которое выглядит следующим образом:
public function getCategoryNameAttribute()
{
return $this->category->name;
}
Затем вы можете просто ссылаться на имя категории следующим образом:
$product->categoryName
Основная проблема, которую я вижу, заключается в том, что вы ссылаетесь на «категории» в своем коде, как если бы он был множественным.Если продукт относится ко многим категориям, решение будет другим, и ваши отношения потребуют сводной таблицы, как вы описываете.Но если продукт относится только к одной категории, как подразумевает ваш код, приведенного выше решения должно быть достаточно, и вам фактически не нужна сводная таблица.Вы бы просто имели столбец category_id прямо в таблице продуктов.
Если вы хотите иметь несколько категорий для каждого продукта, вы можете сделать что-то подобное, но вернуть массив:
public function getCategoryNamesAttribute()
{
return $this->categories->pluck('name');
}
Это вернет массив имен категорий, связанных с этим продуктом, и будет доступен как:
$product->categoryNames