Покинул форум
Сообщений всего: 29
Дата рег-ции: Дек. 2011
Помог: 1 раз(а)
Здравствуйте! Привожу в порядок свой небольшой проект основной паттерн у которого MVC.
Внимание, вопрос!
Как лучше сделать:
1) 1 таблица 1 модель 1 контроллер N видов
2) 1 таблица 1 модель N контроллеров N видов
3) 1 таблица N моделей(добавить/модифицировать/удалить) N контроллеров N видов
И ещё вопрос - например в одной из моделей нужно узнать значения других(ой) таблиц(ы) - как лучше это сделать?
Спасибо!
----- http://www.anymini.ru
DlTA
Отправлено: 17 Марта, 2012 - 22:22:56
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
табличка != модель
контрол =N моделей+ N видов
navitesting
Отправлено: 17 Марта, 2012 - 23:04:15
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Дек. 2011
Помог: 1 раз(а)
DlTA Спасибо! А насчёт второго вопроса не можете посоветовать?
----- http://www.anymini.ru
DlTA
Отправлено: 17 Марта, 2012 - 23:29:17
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
это должно было следовать из прошлого ответ
если часть данной модели то соответствующим методом,
если же это не касается данной модели, то произвести вызовом метода соответствующей модели
navitesting
Отправлено: 18 Марта, 2012 - 11:55:18
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Дек. 2011
Помог: 1 раз(а)
DlTA
Спасибо! А, если, например, не существует впринципе модели, которая запрашивает те данные, что нужны, из другой таблицы, и использовать её нужно лишь в определённом контексте, как поступить -
1) написать модель к этой таблице без контроллера вида и всего остального отдельно, и вызывать её из МОДЕЛИ которой она нужна
2) написать в МОДЕЛИ метод обращающийся к этой таблице
?
И ещё по поводу видов - вид не обязан быть классом - но лучше может всё таки классом?
Может, смешно и глупо, но хочется чтобы всё было идеально и хоть вид и есть представление - отделить представление от представления - чтобы не было внутри html или php кода вообще( чтобы было чтото одно из двух зол ) -> мне нужно думать в сторону шаблонизаторов или есть какая то альтернатива?
----- http://www.anymini.ru
caballero
Отправлено: 18 Марта, 2012 - 12:28:20
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
но хочется чтобы всё было идеально и хоть вид и есть представление - отделить представление от представления - чтобы не было внутри html или php кода вообще( чтобы было чтото одно из двух зол ) -> мне нужно думать в сторону шаблонизаторов или есть какая то альтернатива?
Нет не только альтернативы, нет вообще нормального решения.
и чего у тебя вид и представление разные вещи - это одно и тоже.
Не пытайся решать задачу пока путаешся в терминах и понятиях.
SELECT tale_id,date_c,date_e,title,SUBSTR(tale,1,100) tale,grade,user_id FROM table_name WHERE tale_id IN(SELECT tale_id FROM other_table_name WHERE tag_id=x )AND visible=yes AND user_id=y
Всё равно в две модели писать?
----- http://www.anymini.ru
DlTA
Отправлено: 19 Марта, 2012 - 09:54:05
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
запрос плохой, хостер вам за него сделает наганяй,
проблема в том что внутренняя выборка не имеет ключа, чем сильно напрягает ресурс
используйте JOIN
navitesting
Отправлено: 19 Марта, 2012 - 10:00:04
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Дек. 2011
Помог: 1 раз(а)
DlTA
Спасибо! Правда я пока про JOIN в общих чертах знаю.
А модели две сделать если будут ключи? Пожалуйста, если вам не трудно, приведите пример или скажите что почитать, чтобы двигаться в верном направлении?
----- http://www.anymini.ru
DlTA
Отправлено: 19 Марта, 2012 - 10:32:12
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
может детальней расскажите что у вас там, а то абстрактными вещами кидаться...
navitesting
Отправлено: 19 Марта, 2012 - 10:39:40
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Дек. 2011
Помог: 1 раз(а)
DlTA
вот модель наследуемая от общего класса Model который в свою очередь от Db а та от Settings
Сейчас я реструктуризирую это дело потихоньку, дальше конечно всё будет не в конструкторе - но не суть.
Суть в том, чтобы сделать как лучше в плане разделения моделей, как вы рекомендовали:
$query='SELECT tale_id,date_c,date_e,title,SUBSTR(tale,1,100) tale,grade,user_id FROM '.
$this->table_name.' WHERE visible=\'yes\' LIMIT '.$this->config->getValue('TALES_PER_PAGE');
}elseif($tag!== 0 &&$author!==0){
// <-- вот с этим запросом проблемы
$query='SELECT tale_id,date_c,date_e,title,SUBSTR(tale,1,100) tale,grade,user_id FROM '.
$this->table_name.' WHERE tale_id IN (SELECT tale_id FROM GalTalesTags WHERE tag_id=\''.
$tag.'\' ) AND visible=\'yes\' AND user_id='.$author.' '.$limit;
}elseif($tag!==0){
// <-- вот с этим запросом проблемы
$query='SELECT tale_id,date_c,date_e,title,SUBSTR(tale,1,100) tale,grade,user_id FROM '.
$this->table_name.' WHERE tale_id IN (SELECT tale_id FROM GalTalesTags WHERE tag_id= \''.
$tag.'\' ) AND visible=\'yes\' '.$limit;
}elseif($author!==0){
// <-- вот с этим запросом проблемы
$query='SELECT tale_id,date_c,date_e,title,SUBSTR(tale,1,100) tale,grade,user_id FROM '.
$this->table_name.' WHERE user_id IN (SELECT id FROM GalUsers WHERE user_id=\''.
$author.'\' ) AND visible=\'yes\' '.$limit;
}
}
----- http://www.anymini.ru
DlTA
Отправлено: 19 Марта, 2012 - 11:32:09
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
1) у разве есть в базе записи с id=0?
2) ни одного человеческого комента, если всмотреться то понятно что выборка отличается лиш тем есть или нет автора или тега, но с учетом отображения кода на форуме, тяжело это сообразить
3) этого кода не должно быть в конструкторе (вы это понимаете но на всякий случай)
4) ну а теперь то как это вижу я (это мое субъективное имно)
у вас должна быть модель Рассказы
у этой модели должны быть метода: получить рассказ, записать рассказ, изменить рассказ, ......; при редактировании происходит также редактирование сводной таблицы привязки к тегам, это можно объединить в эту же модель.
5) запросы. $this->table_name это может быть разные таблицы, какая? (Добавление)
6) пользуйтесь довйными кавычками, существенно упрощает код
7) а можено пример таблиц в нагладном виде, а то у меня впечатление что существенная ошибка в архитектуре
navitesting
Отправлено: 19 Марта, 2012 - 11:48:00
Новичок
Покинул форум
Сообщений всего: 29
Дата рег-ции: Дек. 2011
Помог: 1 раз(а)
5) $this->table_name - это текущая таблица - соответствующая названию класса. В классе Model от которого наследуется класс GalTales реализован небольшой метод который возвращает название наследуемого класса.
по поводу первого пункта не понял
вот таблицы: Прикреплено изображение (Нажмите для увеличения)
----- http://www.anymini.ru
caballero
Отправлено: 19 Марта, 2012 - 11:58:21
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
вот модель наследуемая от общего класса Model который в свою очередь от Db а та от Settings
а нахрена его наследовать от DB да с еще и от settings?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.