php – 简单的afterSave方法在Yii中不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 简单的afterSave方法在Yii中不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1625字,纯文字阅读大概需要3分钟。
内容图文
![php – 简单的afterSave方法在Yii中不起作用](/upload/InfoBanner/zyjiaocheng/731/5255dbb5e7a544d3a16904432c30ff90.jpg)
我想通过afterSave方法更新插入raw中的字段,因此我在Driver Model中开发了以下代码
protected function afterSave() {
parent::afterSave();
if ($this->isNewRecord) {
$newid = self::newid($this->id);
$this->updateByPk($this->id, new CDbCriteria(array('condition'=>'driverid = :driverid', 'params'=>array('driverid'=> $newid))));
}
}
以及在控制器中使用的方法:
public function actionCreate()
{
$model=new Driver;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Driver']))
{
$model->attributes=$_POST['Driver'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}
为什么保存后不起作用?
编辑:
private static function CheckNumber($number) {
$array = array(10);
for ($i = 0; $i < 10; $i++)
$array[$i] = 0;
do {
$array[$number % 10]++;
$number /= 10;
} while ((int) ($number / 10 ) != 0);
$array[$number]++;
for ($i = 0; $i < 10; $i++)
if ($array[$i] > 1)
return false;
return true;
}
public static function newid($id) {
while (self::CheckNumber($id) == FALSE) {
$id++;
}
return $id;
}
解决方法:
你的updateByPk搞砸了……
因为它不清楚你想要做什么..所以我假设你想通过self :: newid($this-> id)的结果更新driver_id值;刚插入的行..
你应该做的是:
protected function afterSave() {
parent::afterSave();
if ($this->isNewRecord) {
$newid = self::newid($this->id);
$this->driverid = $new_id;
$this->isNewRecord = false;
$this->saveAttributes(array('driverid'));
}
}
是的,你对afterSave的使用是正确的()
isNewRecord is true even after new record is created, but after first
time, it will be false always..
From Yii Forum said By Qiang Himself..
内容总结
以上是互联网集市为您收集整理的php – 简单的afterSave方法在Yii中不起作用全部内容,希望文章能够帮你解决php – 简单的afterSave方法在Yii中不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。