@1alexandr

Как реализовать связь многие-ко-многим для одной и той же таблицы?

Здравствуйте, уважаемые знатоки!

У меня возникла проблема с реализацией многоуровневого каталога. Есть сущность category у неё есть id, parent_id, name. Родительская категория ничего не знает о дочерних. Собственно вопрос как познакомить родителя с ребенком?
В голову мне ничего не пришло кроме связи многие ко многим. Но как это реализовать и вообще возможно ли это?
Извеняюс за нубский вопрос.
  • Вопрос задан
  • 3484 просмотра
Пригласить эксперта
Ответы на вопрос 2
В смысле? Вывести всех дочерних, у которых родитель равно id родителя, вот тебе и связь "родителя" с "дочерьми"???
SELECT  * FROM `category` WHERE `parent_id`='какому то id'


UPDATE::
Для связи много ко многим, создать еще одну таблицу. В котором будут поля `родитель` и `ребенок`.
Вывести всех дочерних по id родителя:
SELECT `child` FROM `parent_child` WHERE `parent` = 'чему_то'

Вывести всех родителей по id ребенка:
SELECT `parent` FROM `parent_child` WHERE `child` = 'чему_то'


Естественно в таблице должно быть поле `id` для удобной манипуляции с ней.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
category: [id, name]
categoryHasCategory: [parentId, childId]

Только будьте осторожны, такая схема вандало-не-устойчивая и может содержать рекурсивные ссылки.

Для деревьев все же лучше ONE-TO-MANY

category: [id, parentId, name]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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