#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();
}
}
}
}