我对YII很新,我不明白。 我的系统出错了。我必须更新SQL行计数器。 sql table:
tbl_questions => answercount
我有这个代码可以修改它:
$model = Questions::model()->findByPk($id);
$model->answercount += 1;
$model->save(false);
问题是:该解决方案不做任何事情。我怎样才能找到问题,或解决方案是什么?我可以为此使用一个很好的教程。
答案 0 :(得分:0)
$model->answercount += 1;
$model->attributes = array('answercount' => $model->answercount);
$model->save();
要进行调试,请在配置中尝试以下操作:
'db'=>array(
…
'enableProfiling'=>true,
'enableParamLogging' => true,
),
答案 1 :(得分:0)
可能存在与保存操作有关的一个或多个错误。您正在执行的进程应将更新的数据保存到数据库,但更新或其他错误可能会出现问题,导致无法执行保存。
尝试以下
if(!$model->save())
{
throw new Exception("Error saving model : " . var_export($model->getErrors(), true));
}
如果保存操作失败,这将引发异常,也许我们可以从那里开始。
答案 2 :(得分:0)
在YII中,有三种方法可以更新计数器。
对于所有这些方法,我们必须在执行更新过程之前获取对象。即,
$obj = YourObject->model()->findByPk($id);
他们之间的差异:
$ obj->访问次数+ = 1; $ obj->保存();
$ obj-> saveCounters(阵列( '访问'=> '1'));
$ obj-> updateCounters(array('visits'=>'1','id'=> $ id ));
诀窍是:
最好使用saveCounters()
如果您使用updateCounters()
,请确保已将ID设置为条件,如代码中突出显示的那样。否则,所有记录的“访问次数”字段+1。
您还可以参考此link了解详情。