Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

В чем заключается главная фишка модуля ORM
http://forum.kohanaframework.su/viewtopic.php?f=33&t=699
Страница 1 из 1

Автор:  only [ 09 июл 2013, 22:47 ]
Заголовок сообщения:  В чем заключается главная фишка модуля ORM

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

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

Автор:  WinterSilence [ 09 июл 2013, 23:09 ]
Заголовок сообщения:  Re: ORM

Выводы за тобой
http://ru.wikipedia.org/wiki/ORM
http://ru.wikipedia.org/wiki/Model-View-Controller

Автор:  slider23 [ 11 июл 2013, 11:46 ]
Заголовок сообщения:  Re: В чем заключается главная фишка модуля ORM

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

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

Автор:  arhont [ 11 июл 2013, 12:38 ]
Заголовок сообщения:  Re: В чем заключается главная фишка модуля ORM

Как я понял, при простом запросе я делаю через ORM потому что лень писать, а при очень сложном, потому что сложно рассчитывать...
Итого средние запросы я делаю через обычные модели. Особенно когда нужно Лефт джоин или коунт+выборка.

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

Автор:  slider23 [ 11 июл 2013, 17:26 ]
Заголовок сообщения:  Re: В чем заключается главная фишка модуля ORM

Я бы не сказал, что теряется MVC, просто каждому инструменту свое место. Получение данных с разными критериями можно вынести в отдельные методы ORM-модели, а оперировать данными ORM-объекта и сохранять их можно и в контроллере, это же удобно.

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

Автор:  WinterSilence [ 11 июл 2013, 21:18 ]
Заголовок сообщения:  Re: В чем заключается главная фишка модуля ORM

arhont > Чушь не неси

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

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

Автор:  slider23 [ 12 июл 2013, 12:12 ]
Заголовок сообщения:  Re: В чем заключается главная фишка модуля ORM

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

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/