2009-11-26 2 views
1

У меня есть существующая модель данных, где я могу свободно переименовать вещи в соответствии с CakePHP's conventions. У меня есть тип узла графа, где узел может иметь произвольное количество дочерних узлов и произвольное число родительских узлов (однонаправленные отношения).Self-Referential ManyToMany Convention в CakePHP

Вот таблица узлов, следующих конвенций CakePHP в:

Table: nodes 
Column: node_id (INT) 
Column: description (TEXT) 

Мой вопрос: что таблица присоединиться должна выглядеть? Вот что он выглядит сейчас:

Table: nodes_nodes 
Column: parent_node_id (INT) 
Column: child_node_id (INT) 

А что означает, документация должна быть:

Table: nodes_nodes 
Column: node_id (INT) 
Column: node_id (INT) 

Обратите внимание, что два названия столбцов совпадают, что, очевидно, не будет работать. Какими должны быть названы эти два столбца? Или могут ли соглашения CakePHP не обрабатывать эту ситуацию без конфигурации?

ответ

3

Как отмечают neilcrookes, в Интернете есть некоторые статьи об этом в CakePHP. Here является одним из них, используя User HABTM User (друзей) в качестве примера.

В этой связанной статье вы можете игнорировать все после определения класса пользователя, если вы не собираетесь разбивать страницы на модель.

+0

Это определенно помогает решить проблему. Я собираюсь снова расспрашивать оригинальный дизайн, прежде чем я убегу с этим. ;) Благодаря! – Dolph

1

Если узел имеет дочерние узлы, эти дочерние узлы автоматически имеют первый узел в качестве родителя?

Эти отношения могут быть похожими на отношения пользователей с пользователями, где отношения символизируют общее понятие «друг» в социальных сетях. Предложите, чтобы у вас есть Google для моделей данных пользователей/друзей, чтобы узнать, помогает ли это.

+0

Чтобы ответить на ваш вопрос, да. Однако, в отличие от модели дружбы, обратная связь тогда не допускается. Другими словами, вы не можете иметь круговые отношения через любое количество узлов. Ребенок дочернего узла также не может быть родителем первого узла. – Dolph