Kohana PHP Изменения ORM в Kohana 3.1.0

В следующей мажорной версии Kohana — 3.1.0 в модуле ORM планируются некоторые изменения:

  • Будет убрана "ленивая" загрузка (lazy loading);
  • Будет убран метод save();
  • Вместо него добавляются два метода: create() и update();
  • Изменен доступ к has_many (для этого больше не нужно будет использовать find_all());
  • Оптимизация кода;

Подробности

Изменения в has_many: До этого, чтобы получить доступ к отношению has_many, надо было использовать метод find_all():
$user->accounts->find_all()
Теперь же это будет выглядеть немного по-другому, так же как и было до версии 3.0
$user->accounts
Если вы хотите задать параметры запроса, поместите условия перед доступом к объекту has_many:
$user->where('active', '=', 1)->accounts
Методы create() и update()

Метод save() был убран и на смену ему пришли два новых метода create() и update(). По заверениям разработчиков, это облегчит написание кода и избавит программистов от различных неоднозначностей и прочей головной боли.

Создание записи:
// Автоматический выбор primary ключа
$user = ORM::factory('user');
$user->name = 'John';
$user->create();

// Выбор ключа
$user = ORM::factory('user');
$user->id = 5;
$user->create();

// Создание объекта в одну строку
ORM::factory('user')->set('name', 'John')->create();
Обновление записи:
// Загрузить объект с id=6 и изменить имя на 'Bob'
$user = ORM::factory('user', 5);
$user->name = 'Bob';
$user->update();

// Изменить первичный ключ Bob на 6
$user->id = 6;
$user->update();

// Обновить объект с id=5 без предварительной загрузки
// (используется только 1 запрос)
$user = ORM::factory('user')->set('name', 'Bob')->update(5);

Множественное обновление и удаление записей

Можно обновлять и удалять несколько записей за раз, передавая TRUE в качестве параметра функций update() или delete():
// Удалить все неактивные записи
ORM::factory('user')->where('active', '=', 0)->delete(TRUE);

// Деактивировать все активные записи
ORM::factory('user')->where('active', '=', 1)->set('active', 0)->update(TRUE);
  18 декабря 2009  |    Kohana PHP  |    Spider
  Kohana, php, фреймворк

Комментарии (2)

andrew | 8 декабря 2010, 14:41
imho, как дополнение гибкости - хорошо, особенно вариант с автоматическим выбором праймери ки и непосредственным его изменением:
# $user = ORM::factory('user');  
# $user->id = 5;  
# $user->create();  
 
но обратная совместимость должна быть!
что значит "save() был убран" ?! вы чё? Well
andrew | 8 декабря 2010, 14:43
так 5 или 6? Well
поправьте пример:
# // Загрузить объект с id=6 и изменить имя на 'Bob'  
# $user = ORM::factory('user', 5);  
# $user->name = 'Bob';  
# $user->update();

Добавить комментарий

Ваше имя: *
Ваш e-mail: * (не публикуется)
Адрес сайта:
Комментарий: *
полужирный курсив курсив курсив вставить ссылку

  

Новости сайта в RSS

Категории

Статьи

Новые Популярные Комментируемые

Облако меток

Разное

Продажа авто Воронеж, покупка авто в Воронеже, авто с пробегом в Воронеже