2016-08-24 2 views
0

Есть ли способ вычитать значение в столбце int, чтобы сказать 1? У меня есть кнопка, которая при нажатии будет вызывать функцию для сохранения данных в таблице, но я хотите знать, как вычитать число в базе данных с помощью yii 2 Я попробовал следующий код ниже, но это не повлияло. Может кто-нибудь помочь мне, как сделать математические операции в yii 2?Математическая операция в yii 2 Активный запрос

public static function AddSubject($subjectid, $clientid){ 
    $subject = ActiveCurriculum::findOne(['subjectid' => $subjectid]); 

    $activesubject = new ActiveSubject(); 
    $activesubject->clientid = $clientid; 
    $activesubject->subjectid = $subject->subjectid; 
    $activesubject->subjectcode = $subject->subjectcode; 
    $activesubject->days = $subject->days; 
    $activesubject->time = $subject->time; 
    $activesubject->section = $subject->section; 
    $activesubject->room = $subject->room; 
    $activesubject->units = $subject->units; 
    $subject->units = $subject->units - 1; //this should subtract the number 
    //of slots by 1 but now it is not working. 
    $activesubject->save(); 

    return true; 

    //return static::findOne(['subjectid' => $subjectid]); 
       //->where(['subjectid' => $subjectid]); 

    } 

ответ

1

Когда Вы внесли некоторые изменения в вашем объекте AR и хотите, чтобы ваши изменения будут сохранены, вы должны выполнить ->save():

$subject->units = $subject->units - 1; 
$subject->save(); 

Похоже, вы просто забыли сделать это.

+0

Обратите внимание, что часть уменьшения может быть упрощена до этого: '$ subject-> units -;' – arogachev

0

Вы можете использовать следующие массово копировать атрибуты, а затем сохранить новую модель:

public static function AddSubject($subjectid, $clientid){ 

    $subject = ActiveCurriculum::findOne(['subjectid' => $subjectid]); 

    $activesubject = new ActiveSubject(); 

    $activesubject->attributes = $subject->attributes; 
    $activesubject->isNewRecord = true; 

    $activesubject->clientid = $clientid; 
    $activesubject->units = $activesubject->units - 1; 

    return $activesubject->save(); 
} 

В своем коде вы вычитать из $subject модели, но вы сохраните $activesubject модель.

Смежные вопросы