Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

вопрос по архитектуре приложения на cake

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
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


немного ссылка не по теме

или меня не поняли
или я неправильно написал Sad

Код:
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
Но это моё предположение. Я не проверял на практике - проверю, отпишусь Smile
Я изначально сделал через 2 jointable и "сломался" на выдаче (как у меня указано выше).

Но это такое дело, меня, как обычно, поджимало время по сдаче проекта, поэтому я проблему обошёл... Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 27 Дек 2008 18:02:05    Заголовок сообщения: Ответить с цитатой

Моё предположение об одной джойн-тейбл с четырьмя полями - ошибочно.
Так работать не будет.

Решил поэкспериментировать с 2 join table и pagination пока экспериментирую Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru