Yii 修改数据的两种方式 [ 1.1 版本 ]
大牛绕道,新手来看
<?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 '修改失败';
}
?>
YiiSoEasy 中国
注册时间:2014-11-25
最后登录:2024-10-19
在线时长:189小时7分
最后登录:2024-10-19
在线时长:189小时7分
- 粉丝210
- 金钱10947
- 威望120
- 积分14037
共 4 条评论
身为网站管理人员,格式都没调好。
咱的编辑器没表情吗?想回个龇牙的,嘿嘿
这个是yii2.0版本的吗?还是2.0以前的?
额,好吧,我看到了,有2.0的update方案吗,调用activerecord的
@housirvip 直接循环 updateAll 就可以了。。
<?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;
}
}
为什么不load加载,然后直接save ,还要model->某个字段这么写呢,如果表里面字段多怎么办
load 是加载post请求数据的时候吧。这是从库里查出来修改。
@YiiSoEasy 是数据库查询出来,然后save某个字段啊,sorry,,,