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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Основы ORM - Изменение записей
СообщениеДобавлено: 06 сен 2012, 22:27 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
В уроке "Основы ORM - Изменение записей" вы узнаете, как добавлять, изменять и удалять записи посредством ORM, а также как посчитать количество записей.
Ссылка на урок:
http://kohanaframework.su/database/orm_change_data

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 06 сен 2012, 22:52 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
orm->delete() - может удалить несколько строк
При обновлении множества записей в цикле можно проходить только set, а update можно запустить после цикла обновив все измененные записи одновременно.
как-то так...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 07 сен 2012, 00:54 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Можно примерчик кода ?
Примеры встречал или с delete_all или с циклом.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 07 сен 2012, 01:30 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Цитата:
При обновлении множества записей в цикле можно проходить только set, а update можно запустить после цикла обновив все измененные записи одновременно.
как-то так...


У меня таким макаром только последнюю запись обновило.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 07 сен 2012, 01:36 
Не в сети
Бывалый

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Да, похоже я ошибся, ввели в заблуждения описания функции
Код:
    * Deletes a single record or multiple records, ignoring relationships.
    * Updates a single record or multiple records

или еще не реализовали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 07 сен 2012, 02:59 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Ну вот как-то мне это совсем не нравится. Это получается он столько запросов делает, сколько записей попадает под выборку ?
Что-то типа
DELETE FROM `articles` WHERE `id` = 8
DELETE FROM `articles` WHERE `id` = 12
DELETE FROM `articles` WHERE `id` = 27
вместо
DELETE FROM `articles` WHERE `name` = 'Тапки'

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 07 сен 2012, 05:05 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
admin писал(а):
Ну вот как-то мне это совсем не нравится. Это получается он столько запросов делает, сколько записей попадает под выборку ?


Пардон, а чем принципиально отличается
Код:
DELETE FROM `articles` WHERE `id` = 8

от
Код:
DELETE FROM `articles` WHERE `name` = 'Тапки'


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 07 сен 2012, 17:09 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Тем, что первого запроса может быть штук 200, а второго - только 1.
Например, так:

id----------name
1 Варежки
2 Тапки
3 Тапки
4 Кирзачи
5 Шлепанцы
6 Тапки

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 08 сен 2012, 18:11 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Код:
    /**
     * Delete all related entries
     *
     * @throws Kohana_Exception
     * @return int
     */
    public function delete_all()
    {
        $counter = 0;
        if ($this->_loaded)
            throw new Kohana_Exception('Method delete_all() cannot be called on loaded objects');

        foreach($this->find_all() as $o)
        {
            $o->delete();
            $counter++;
        }

        return $counter;
    }


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Основы ORM - Изменение записей
СообщениеДобавлено: 08 сен 2012, 19:17 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Ну. Я про это и говорю. Удаление в цикле.

$o->delete(); каждый раз формирует новый запрос на удаление, т.е. с каждой итерацией удаляет по одной записи.

Разве это нормально ? Если скажем мне нужно удалить все черновики статей, т.е. все записи с mark = 1
Сначала сделать их выборку, а потом в цикле проходить каждую запись и удалять. А если их 5000 ? Получится 5001 запрос.

А можно просто написать одну строку:
Код:
DB::delete('articles') ->where('mark', '=', 1);

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу 1, 2  След.

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


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

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


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

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