YiiSoEasy 2014-12-09 09:30:02 51101次浏览 4条评论 2 0 0

大牛绕道,新手来看

<?php
//第一种修改方法:
		
/*
 * $pk 代表主键,可以是一个也可以是一个集合。
 * $attributes 代表是要修改的字段的集合。
 * $condition 代表条件。
 * $params 传入的值。
*/
$count = User::model()->updateByPk($pk,$attributes,$condition,$params);
if($count > 0) {
    echo '修改成功';
} else {
    echo '修改失败';
}


//第二种修改方法

$model = User::model()->findByPk($pk);
$model->id = 10;
$model->user_name = 'zhangsan';
$model->password = 'sb';
$count = $model->update(array('id','user_name','password'));
if($count>0) {
    echo '修改成功';
} else {
    echo '修改失败';
}
	
?>
  • 评论于 2014-12-09 15:29 举报

    身为网站管理人员,格式都没调好。

    1 条回复
    评论于 2014-12-09 16:25 回复

    咱的编辑器没表情吗?想回个龇牙的,嘿嘿

  • 评论于 2015-04-05 14:28 举报

    这个是yii2.0版本的吗?还是2.0以前的?

    2 条回复
    评论于 2015-04-05 14:29 回复

    额,好吧,我看到了,有2.0的update方案吗,调用activerecord的

    评论于 2016-09-13 20:11 回复

    直接循环 updateAll 就可以了。。

  • 评论于 2016-12-30 16:30 举报

    <?php //控制器中
    namespace app\controllers;
    header('content-type:text/html;charset=utf8');
    use Yii;
    use app\models\Position;
    use yii\web\Controller;
    use yii\web\NotFoundHttpException;
    class PositionController extends Controller{

    ... ...其他代码... ...
    

    public function actionView($p_id){ //跳往修改页面

      //$id = Yii::$app->request->get('p_id');和括号里接值效果是一样的(因为前页是get传值)
    $arr=Position::find()->where(['p_id'=>$p_id])->with('company')->asArray()->one();
    return $this->render('view',$arr);//因为数据表Position字段和视图view.php文本框、单选框等等的标签名字完全一致,所以这里直接用了$arr,否则要用[’key’=>’value’]的形式。
    }
    public function actionUpdate(){    //执行修改
        $item=Yii::$app->request->post();  //接修改后的值
    	$query=new Position();
        $sign=$query->rewrite($item);    //封装好的方法
        if($sign==1){
            $this->redirect(['position/index']);
        }else{
            throw new NotFoundHttpException();
        }
    }
    

    }

    <?php //模型中
    namespace app\models;
    use yii\db\ActiveRecord;
    use Yii;
    use yii\data\Pagination;
    class Position extends ActiveRecord{
    ... ...其他代码... ...
    public function Rewrite($data){ //即使新值和旧值完全相同,依然可以提交并执行修改

    $res=Position::find()->where(['p_id'=>$data['p_id']])->one();
    $res->p_name=$data['p_name'];
    $res->p_time=time();
    $res->p_request=$data['p_request'][0];//数组需要处理成字符串
    $sign=$res->save();
    return $sign;
    

    }
    }

    觉得很赞
  • 评论于 2017-02-20 10:33 举报

    为什么不load加载,然后直接save ,还要model->某个字段这么写呢,如果表里面字段多怎么办

    2 条回复
    评论于 2017-02-21 09:13 回复

    load 是加载post请求数据的时候吧。这是从库里查出来修改。

    评论于 2017-02-21 09:19 回复

    是数据库查询出来,然后save某个字段啊,sorry,,,

您需要登录后才可以评论。登录 | 立即注册