如果我的数据库中没有现有的令牌数量,我正在尝试做的是将令牌数量设置为0。然而,我下面的代码不起作用,虽然它与我用于购买和花费功能完全相同的功能完全相同。
public function actionIndex() {
$_id = Yii::app()->user->getId();
$model = Tokens::model()->findByAttributes(array('UserID' => $_id));
if ($model === null)
$defaultqty = 0;
$model->TokenAmount = ($model->TokenAmount + $defaultqty);
$model->save(false);
throw new CHttpException(404, "yea it's broke, deal with it");
$this->render('index', array(
'model' => $model,
));
}
答案 0 :(得分:1)
$model = Tokens::model()->findByAttributes(array('UserID' => $_id));
if ($model === null) ...
如果$ model变量中没有模型对象。您应该在使用之前创建新模型。
$model = Tokens::model()->findByAttributes(array('UserID' => $_id));
if ($model === null) {
$model = new Tokens;
...
答案 1 :(得分:0)
我认为最好使用CActiveRecord beforeSave()
方法
class Tokens extends MyActiveModel {
private $defaultTokenAmount = 0;
...
public function beforeSave() {
if (empty($this->TokenAmount)) {
$this->TokenAmount = $defaultTokenAmount;
}
return parent::beforeSave();
}
}