Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
yuriyb Гость цитировать
|
Добавлено: 24 Дек 2008 00:49:36 Заголовок сообщения: вопрос по архитектуре приложения на cake |
|
|
добрый день
к примеру есть модели User и Group
а также Album и Foto.
есть 2 способа связать User и Group с Album :
1. albums_users ; groups_users
или
2. albums_entities
и в Entiti определть поле 'type' тоторое определяет
то ли Entiti-> User или Entiti-> Group
я думаю что 2 способа хороши
хотелось бы пообщаться на тему у кого был практический опыт в этом нарпавлении |
|
Вернуться к началу |
|
|
evilbloodydemon
цитировать
Зарегистрирован: 11 Окт 2007 20:32:19 Сообщения: 125
|
Добавлено: 24 Дек 2008 08:23:11 Заголовок сообщения: |
|
|
http://book.cakephp.org/view/78/Associations-Linking-Models-Together#hasAndBelongsToMany-HABTM-83 _________________ поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
yuriyb Гость цитировать
|
Добавлено: 24 Дек 2008 13:50:08 Заголовок сообщения: |
|
|
evilbloodydemon писал(а): | http://book.cakephp.org/view/78/Associations-Linking-Models-Together#hasAndBelongsToMany-HABTM-83 |
немного ссылка не по теме
или меня не поняли
или я неправильно написал
Код: | CREATE TABLE `albums` (
`id` int(10) unsigned NOT NULL auto_increment,
`parent_id` int(10) unsigned NOT NULL default '0',
`entity_id` int(10) unsigned NOT NULL,
`entity_type` tinyint(4) NOT NULL,
`name` varchar(100) default NULL,
`description` text,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`,`entity_id`,`entity_type`)
) |
это вместо albums_users ; groups_users
или entity_id + entity_type вместо user_id , group_id ...... |
|
Вернуться к началу |
|
|
evilbloodydemon
цитировать
Зарегистрирован: 11 Окт 2007 20:32:19 Сообщения: 125
|
Добавлено: 24 Дек 2008 15:33:13 Заголовок сообщения: |
|
|
yuriyb писал(а): | или я неправильно написал |
ога, дважды. давайте-ка обойдемся без sql и прочего пхп, а просто попробуем разобраться какую задачу нужно решить. на русском языке. _________________ поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
yuriyb Гость цитировать
|
Добавлено: 27 Дек 2008 03:31:07 Заголовок сообщения: |
|
|
итак мы имеем связь
HABTM
к примеру User может иметь много групп и классов
и в группы и классы входят много Users.
классический пример рещения это задачи
это создание много таблиц связей типа groups_users
если ли смысл определить только одну таблицу связи ?
entities_users , и через поле entity_type определять
это связь HABTM Userа с groups или еще чем то |
|
Вернуться к началу |
|
|
evilbloodydemon
цитировать
Зарегистрирован: 11 Окт 2007 20:32:19 Сообщения: 125
|
Добавлено: 27 Дек 2008 10:31:38 Заголовок сообщения: |
|
|
yuriyb
оригинальная идея, и конечно же ее можно реализовать, потому что реализовать можно всё. вопрос только в доле ручного труда. в классическом случае тортик большую часть работы сделает сам, а вам надо будет только командовать. во втором нужно будет делать самому.
мораль: если уж пользуетесь фреймворком, то делайте так, как в нем заведено, а не изобретайте велосипеды. _________________ поздняк метаться - ракеты в воздухе
jabber-конференция по CakePHP - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 27 Дек 2008 17:22:57 Заголовок сообщения: |
|
|
Я так понял, вопрос заключался в том, следует ли 2 HABTM вязать двумя jointable или ограничиться одной с "переключателем"?
Если так, то я могу скзаать следующее
Если вы создадите A HABTM B, A HABTM C ( 2 jointable)
То потом можете намучиться с выборкой по двум таблицам. Т.е. если вам надо будет выбрать все А, у которых B.i = 1 & C.i = 1 - будет гемморно или сразу, или когда дело коснётся pagination вывода.
Если вы создалите 1 jointable с "переключателем", то вам придётся переписывать механизм выборки с учётом переключателя.
Предполагаю, что можно создать 1 jointable с четырьмя полями:
id, A_id B_id C_id
и если в данной HABTM связи не будет задействовано C или B - оставлять поле = 0
Но это моё предположение. Я не проверял на практике - проверю, отпишусь
Я изначально сделал через 2 jointable и "сломался" на выдаче (как у меня указано выше).
Но это такое дело, меня, как обычно, поджимало время по сдаче проекта, поэтому я проблему обошёл... |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 27 Дек 2008 18:02:05 Заголовок сообщения: |
|
|
Моё предположение об одной джойн-тейбл с четырьмя полями - ошибочно.
Так работать не будет.
Решил поэкспериментировать с 2 join table и pagination пока экспериментирую |
|
Вернуться к началу |
|
|
|