Как создать связующую таблицу с дополнительным столбцом laravel?

Существуют две таблицы: categories, attributes. Каждой категории принадлежит несколько атрибутов. Таблица category_attribute по задумке является связующей. Laravel позволяет получать атрибуты, принадлежащие категории, и категории, имеющие атрибут. Необходимо задать каждому из атрибутов определенное значение для каждой категории. Например, атрибут «описание» будет для каждой категории разным.
Для решения этой задачи я хочу добавить в связующую таблицу category_attribute помимо столбцов идентификаторов столбец value, в котором будут храниться значения атрибутов для категорий. Вопрос таков. Как получить все атрибуты категории и получить значения этих атрибутов? Если задумка со связующей таблицей неправильна, то подскажите, в каком направлении двигаться.
Спасибо.
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
Denormalization
@Denormalization
Можно сделать и так.
Просто в category_attribute добавляем value и при создании связи указываем:
return $this->belongsToMany(Attribute::class)->withPivot();

В итогде значение value можно будет получить через:
$attributes = Category::attributes;
foreach ($attributes as $attr) {
  echo $attr->pivot->value, PHP_EOL;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы