иерархическая информация в учении и symfony 1.4 - PullRequest
1 голос
/ 02 ноября 2011

У меня есть объект с множеством полей (например, информация о пользователе Facebook с несколькими уровнями, например, Основная информация, Контактная информация и ...).и я хочу использовать его так же, как Facebook.Я имею в виду, я хочу, чтобы несколько вкладок помещали связанные поля там.Самый простой способ - хранить их все на столе, но это слишком неприятно.Есть ли способ сделать это лучше?Я знаю кое-что об иерархическом дизайне базы данных, но есть ли способ сделать это в Symfony 1.4 и использовать его создателя форм?

спасибо.

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Прежде всего: где вам нужна помощь?В представлении или в модели?

Если вы хотите, чтобы он тоже выглядел как Facebook, мы говорим о View.Это не имеет ничего общего с Symfony, а только с HTML (возможно, с некоторыми CSS / JS).

Если вы говорите о том, как хранить эту информацию: информация, которую вы описываете, не является «иерархической».Иерархический - это деревья и тому подобное, большую часть времени с почти бесконечной глубиной.Здесь вы говорите о строгой структуре (вы, как разработчик, точно знаете, какие поля вы хотите визуализировать, и определяете их самостоятельно).Вы можете заглянуть в магазины Entity-Attribute-Value.Но будьте осторожны: при реализации чего-то подобного в mySQL выполнять сложные запросы будет непросто.(Даже запрос типа «Перечислить всех людей в Нью-Йорке старше 30 лет» не представляется простым).

Так почему бы вам не пойти с таблицей с большим количеством столбцов?В этом нет ничего противного!То, что вы, как человек, можете иметь проблемы с просмотром этих данных в phpMyAdmin, не имеет ничего общего с тем, как компьютер управляет этой информацией ;-).Вы можете разделить модель «Пользователь» на отдельную модель «Пользовательский профиль» (с отношением один на один), чтобы вы могли легко ссылаться на пользователей на других страницах (где вам не нужны все данные профиля).

0 голосов
/ 02 ноября 2011

Вы можете использовать Doctrine Nested sets. Это в основном древовидная структура, содержащаяся в вашей базе данных. У меня есть демонстрация того, как это можно использовать, но исходный код может напугать вас.

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

Демо

Исходный код

Документация по вложенным доктринам

Учебник по вложенным наборам

...