В Jelly есть метод set()
, а есть load_values()
. Оба они позволяют разом загрузить в модель значения из массива, например $user->set($_POST)
или $user->load_values($_POST)
. Казалось бы, зачем два разных метода для одного и того же? Фишка в том, что метод load_values()
устанавливает значения как изначальные (т.е. используется свойство $_original
), как если бы эти данные были загружены из БД. Соответственно последующая попытка сохранить модель ни к чему не приведет, так как свойства $_saved
и $_loaded
равны TRUE, а $_changed
(в котором хранятся измененные поля модели) пустое. Вывод один — используйте set()
, если только Вы не загружаете данные откуда-нибудь из кэша.
Свежие записи
Метки
acl
auth
cache
captcha
CMS
css
database
db
docs
github
helpers
hooks
i18n
jelly
ko3
Kohana
Kohana3
kohana 3.2
kohana 3.3
locale
modules
oauth
ORM
php
relations
router3
routing
session
sprig
tutorials
uri
userguide
validation
версии
версии
заметки
знаете ли вы
мануал
модули
модули
напильник
редирект
релизы
с праздником!
учебник
Скажите, пожалуйста, как у джели с производительностью? Шустрее или медленее родной орм?
Интересная ORM — надо как-нибудь попробывать. Спасибо.
Скажите, а почему Jelly не следует стандартным конвенциям в кохана и называется class Jelly_Model, а не class Model_Jelly (или просто Jelly, на худой конец) и как её в этом случае автолоадер находит?
@Corp
Тут в комментах писали, что помедленнее, да это как бы и логичнее — штатный ORM достаточно простой и прямолинейный. Надо бы попробовать накатать тестовое приложение для замеров производительности различных ORM’ов для стандартных ситуаций…
@Boffin
Если на то пошло, то и в ORM главный класс называется просто ORM, а не Model_ORM. Тут можно спорить, но сам по себе класс Jelly_Model можно называть не моделью, а библиотекой, т.к. он непосредственно с БД не работает. Стандартный класс Model в ko3 тоже лежит в classes, а не в classes/model. Так что тут все ОК. А автолоадеру никто ведь не указывает, что искомый класс должен быть моделью или контроллером — он это понимает на основании парсинга имени класса. Т.е. controller_site_admin будет разыскиваться в classes/controller/site/admin.php, а Jelly_Core_Model в classes/jelly/core/model.php.