проверка истечения срока действия field weather или нет при загрузке страницы cakephp

#database #save #cakephp-2.0

#База данных #Сохранить #cakephp-2.0

Вопрос:

Следующая функция проверяет, достаточно ли стар баннер, чтобы сделать его неактивным, устанавливая для поля статуса в таблице баннеров значение 0.

/** * * Проверяет, достаточно ли старые баннеры, чтобы их можно было вернуть в статус non-premium * и изменить статус на 0, в случае non-premium * * @return void */

    protected function check_status(){
     $non_premium_expire = 5*24*60*60;
     $premium_expire = 14*24*60*60;
     $data = $this->Banner->find('all');
     foreach ($data as $Banners) {
            if ($Banners['Banner']['is_premium'] == 0) {
                if ((time() - strtotime($Banners['Banner']['created'])) > $premium_expire) {
                     $this->Banner->id = $Banners['Banner']['id'];
                     $this->Banner->saveField('status',0);
                }
            else if ($Banners['Banner']['is_premium'] == 1) {
                if ((time() - strtotime($Banners['Banner']['created'])) > $non_) {
                    $this->Banner->id = $Banners['Banner']['id'];
                    $this->Banner->saveField('status',0);
                }
            }
     }
   }
}
  

из функции mybanners(). т.е. функция check_status() должна вызываться, когда пользователи открывают
/название сайта/mybanners

Я вызвал функцию check_status() из функции mybanners(), показанной ниже

 public function mybanners()
    {


        $this->check_status();
        $this->layout = 'index';
        $this->loadModel('Banner'); 
        $loggedUserId   = $this->Auth->user('id');
  

Моя проблема в том, что статус одного поля не обновляется в базе данных даже после попытки set() и UpdateAll() функции. Какие-либо решения? Я новичок в cakephp

Ответ №1:

Я понял это. Рабочий код приведен ниже.

 ** 
*
* Checks weather the banners are old enough to be turned back to non-premium
* and change the status to 0 , in case of non-premium
* 
* @return void 
*/

   protected function check_status(){
     $non_premium_expire = 5*24*60*60;
     $premium_expire = 14*24*60*60;
     $data = $this->Banner->find('all');
     //pr ($Banners);
     //pr ((time() - strtotime($Banners['Banner']['modified'])) > 5*24*60*60);
     //pr ((time() - strtotime($Banners['Banner']['modified'])) > 14*24*60*60);
     //die();
     foreach ($data as $Banners) {
            if ($Banners['Banner']['is_premium'] == 0) {
                if ((time() - strtotime($Banners['Banner']['modified'])) > $non_premium_expire) {
                     $id = $Banners['Banner']['id'];
                     //pr ("in non premium loop");
                     //pr ($id);
                     //die();
                     $data_one = array('id' => $id , 'status'=> 0, 'modified' => false);
                     $this->Banner->save($data_one);
                     //$this->Banner->clear();
                }
            }
            if ($Banners['Banner']['is_premium'] == 1) {
                if ((time() - strtotime($Banners['Banner']['modified'])) > $premium_expire) {
                     $id = $Banners['Banner']['id'];
                     //pr ("in premium loop");
                     //pr ($id);
                     //die();
                     $data_one = array('id' =>$id , 'status'=> 0, 'modified' => false);
                    //pr ($data_one);
                    //die();
                     $this->Banner->save($data_one);
                     //$this->Banner->clear();
                }
            }
     }
   }