Страница 1 из 1

Удаление просроченных объявлений?

СообщениеДобавлено: 11 мар 2016, 10:33
aizul
Как сделать автоматическое удаление объявлений, срок у которых истек?

Re: Удаление просроченных объявлений?

СообщениеДобавлено: 11 мар 2016, 11:36
Xpycm
Файл protected\components\BeginRequest.php

Код:
Код: Выделить всё
if (is_array($ad)) {
    if (isset($ad['role']) && $ad['role'] == User::ROLE_ADMIN) {
        $sql = 'UPDATE {{apartment}} SET active = '.Apartment::STATUS_INACTIVE.' WHERE id = '.$ad['id'].' LIMIT 1';
        Yii::app()->db->createCommand($sql)->execute();
    }
    else {
        $sql = 'UPDATE {{apartment}} SET active = '.Apartment::STATUS_INACTIVE.', owner_active = '.Apartment::STATUS_INACTIVE.' WHERE id = '.$ad['id'].' LIMIT 1';
        Yii::app()->db->createCommand($sql)->execute();
    }
}
 


Заменить на:
Код: Выделить всё
if (is_array($ad)) {
    Apartment::model()->findByPk($ad['id'])->delete();
}
 


P.S: Не тестил, но должно работать.

Re: Удаление просроченных объявлений?

СообщениеДобавлено: 21 фев 2017, 20:13
Alviksson
А прилагающиеся материалы (фото, видео) тоже удаляются физически? Иначе как отслеживать чем забит сервер?

Re: Удаление просроченных объявлений?

СообщениеДобавлено: 22 фев 2017, 08:15
Xpycm
Код: Выделить всё
Apartment::model()->findByPk($ad['id'])->delete(); 


Как видим, вызывается метод delete модели Apartment.
Это значит, что отработают методы beforeDelete() и afterDelete() : http://www.yiiframework.com/doc/guide/1 ... e.ar#sec-9
В свою очередь, в этих методах и происходит удаление фотографий, видео, комментарий и прочее.
Если интересно, то можете посмотреть эти методы в файле Apartment.php, который находится в папке protected/modules/apartments/models