Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 18:51

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 09 июл 2013, 22:47 
Не в сети
Зеленый

Зарегистрирован: 09 июл 2013, 22:35
Сообщения: 1
Всем привет! у меня есть один маленький вопрос по ORM: в чем заключается главная фишка данного модуля ORM! я понял следующее:
1) То есть в модели мы создаем модель) который наследует orm
2) создаем три метода для валидации и фильтраций данных чтоб его не писать в каждом контроллере labels(), filters(), rules()
3) теперь вопрос: все запросы, добавление, изменение, удаление и т.д. все это пишется в контроллере я правильно понимаю или можно в той же модели создать метод, с помощью которого можно сделать изменения в базе данных?!

или нужно использовать готовые методы у orm типа find_all и так далее??? может даже и глупый вопрос, но я жду ответа :) заранее благодарю...!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ORM
СообщениеДобавлено: 09 июл 2013, 23:09 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
Выводы за тобой
http://ru.wikipedia.org/wiki/ORM
http://ru.wikipedia.org/wiki/Model-View-Controller

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 июл 2013, 11:46 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 03 июн 2013, 00:18
Сообщения: 32
only писал(а):
все запросы, добавление, изменение, удаление и т.д. все это пишется в контроллере я правильно понимаю или можно в той же модели создать метод, с помощью которого можно сделать изменения в базе данных?

Можно и так и так. Если структура данных простая (грубо говоря, страница сайта), то можно прямо в контроллере - в этом как раз фишка ORM, что с простыми данными можно работать без лишнего кода. Но если структура данных сложная, если есть связи и нужны каскадные изменения, если для совершения действий нужны какие-то предварительные проверки, то лучше сделать метод в модели и там все это прописывать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 июл 2013, 12:38 
Не в сети
Бывалый

Зарегистрирован: 14 июн 2013, 17:19
Сообщения: 82
Как я понял, при простом запросе я делаю через ORM потому что лень писать, а при очень сложном, потому что сложно рассчитывать...
Итого средние запросы я делаю через обычные модели. Особенно когда нужно Лефт джоин или коунт+выборка.

Мне не нравится ORM тем что он и пишется в контроллере... Так по моему мнению теряется вся система MVC.
Ещё мне не нравится то, что файлы обычных моделей и ORM находятся вперемешку. Я бы разделял модели по папкам, но Кохана вроде как не предусматривает такой функционал.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 июл 2013, 17:26 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 03 июн 2013, 00:18
Сообщения: 32
Я бы не сказал, что теряется MVC, просто каждому инструменту свое место. Получение данных с разными критериями можно вынести в отдельные методы ORM-модели, а оперировать данными ORM-объекта и сохранять их можно и в контроллере, это же удобно.

Модели по папкам разделять можно, по стандарту файловой системы Коханы, называя класс соответственно: Model_Folder_Folder_..._Modelname


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 июл 2013, 21:18 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
arhont > Чушь не неси

slider23 > Лучше приводи примеры, можешь запутать новичков

Смысл всю работу с данными инкапсулировать в модели состоит в том, что при изменении модели не потребуется переписывать контроллеры. Допустим есть модель товара интернет магазина эта модель используется в 10 контроллерах, если описывать работу с данными модели в контроллерах, то в случае каких-либо изменений в ней, придется переписать модель и 10 контроллеров, а в случае если упаковать работу с данными внутри модели, то потребуется изменить только модель. Понятно объяснил?

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Последний раз редактировалось WinterSilence 15 июл 2013, 15:40, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 июл 2013, 12:12 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 03 июн 2013, 00:18
Сообщения: 32
По поводу моделей в MVC, кстати, советую всем новичкам почитать вот это: http://habrahabr.ru/post/175465/
Вкратце - пишите всё максимально в моделях, особенно если проект большой и планируется длительная поддержка. Контроллер в идеале должен только принимать фокус от роутера, вызывать методы модели (или даже один метод) и передавать данные во вьюху - и все. Логики в нем, как и во вьюхах должно быть по минимуму. Когда в будущем будете мигрировать с одного движка на другой или озаботитесь тестированием - вспомните это добрым словом.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group