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

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

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




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

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
admin писал(а):
А если их 5000 ? Получится 5001 запрос.


1. И как часто встречается ситуация когда нужно удалить 5000 черновиков?
2. Можно использовать триггеры
3. Можно создать хитрую таблицу (InnoDB) и использовать ссылочную целостность (внешние ключи) - тогда достаточно будет удалить одну запись в таблице черновиков, а СУБД сама позаботится о том, чтоб удалились все черновики из таблицы постов.

А вообще да - согласен, этот метод проще и в некоторых ситуациях быстрее. Да и потом если вы используете ORM никто вам не запрещает комбинировать методы взаимодействия с БД.


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

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Ситуация, когда нужно удалить несколько записей, встречается довольно часто.
С черновиками - это лишь пример. 5000 черновиков бывает )) вот взять хотя бы вордпресс. Я пока урок один напишу, он успевает создать 40-50 черновиков :)
Я потом их чищу. Так это один урок и я сразу лишнее прибиваю. А в самом начале порядка 1000 скопилось, пока я плагин DelRevisions не поставил.

Цитата:
Да и потом если вы используете ORM никто вам не запрещает комбинировать методы взаимодействия с БД.

Вот ! Я ж к этому и веду. Не всегда стоит бездумно использовать ОРМ, а потом удивляться, а чой-то у меня сайт так тормозит.

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


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

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Кстати с изменениями записей такая же фигня. Где-то встречал пример, скажем сделать все непрочитанные записи прочитанными. У поля read поменять 0 на 1. Через орм мы выбираем записи с read = 0 и в цикле меняем каждую запись на 1. А можно написать один запрос с update.

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


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

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Не знаю, я для удаления этим пользовался
Код:
<?php defined('SYSPATH') or die('No direct script access.');

/*
 * http://forum.kohanaframework.org/discussion/8447/kohana-3-1-orm-i-save_all/p1
 */
class ORM extends Kohana_ORM
{
    /**
     * Updates all existing records
     *
     * <a href="/profile/chainable">@chainable
     * @return  ORM
     */
    public function update_all()
    {
        $this->_build(Database::UPDATE);

        if (empty($this->_changed))
        {
            // Nothing to update
            return $this;
        }

        $data = array();
        foreach ($this->_changed as $column)
        {
            // Compile changed data
            $data[$column] = $this->_object[$column];
        }

        if (is_array($this->_updated_column))
        {
            // Fill the updated column
            $column = $this->_updated_column['column'];
            $format = $this->_updated_column['format'];

            $data[$column] = $this->_object[$column] = ($format === TRUE) ? time() : date($format);
        }

        $this->_db_builder->set($data)->execute($this->_db);

        return $this;
    }

    /**
     * Delete all objects in the associated table. This does NOT destroy
     * relationships that have been created with other objects.
     *
     * @chainable
     * @return  ORM
     */
    public function delete_all()
    {
        $this->_build(Database::DELETE);

        $this->_db_builder->execute($this->_db);

        return $this->clear();
    }

}
 

_________________
http://de-en.info (работает на Kohana 3.3)


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

Зарегистрирован: 04 окт 2012, 12:52
Сообщения: 1
А такая конструкция для удаления не пойдет?

Код:
ORM::factory('category')
            ->where('name', '=', ''Тапки')
            ->delete();


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

Зарегистрирован: 16 апр 2012, 19:44
Сообщения: 113
Такая конструкция удалит только первую запись.


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

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
yodo780 писал(а):
А такая конструкция для удаления не пойдет?

Код:
ORM::factory('category')
            ->where('name', '=', ''Тапки')
            ->delete();



Тут нужен delete_all()


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

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
yodo780 писал(а):
А такая конструкция для удаления не пойдет?

Код:
ORM::factory('category')
            ->where('name', '=', ''Тапки')
            ->delete();

mamahtehok писал(а):
Такая конструкция удалит только первую запись.

Такая конструкция нихера не удаляет. Говорит, что
Цитата:
Cannot delete reference model because it is not loaded.

Хотя, если заменить ->delete() на find() или find_all(); я пркрасно получаю запись которую мне нужно удалить. Ну так как в ORM записи то удаляются?

_________________
Они плакали и кололись, но продолжали есть кактус!


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

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Цитата:
Хотя, если заменить ->delete() на find() или find_all(); я пркрасно получаю запись которую мне нужно удалить. Ну так как в ORM записи то удаляются?

А в доки никак зазлянуть? http://kohanaframework.org/3.3/guide/orm/using#deleting

_________________
http://de-en.info (работает на Kohana 3.3)


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

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
Спасибо.

_________________
Они плакали и кололись, но продолжали есть кактус!


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

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


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

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


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

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