yii 2.0 ActiveRecord更新不起作用

时间:2015-09-15 11:30:08

标签: activerecord yii2 updatemodel

我是Yii 2的初学者。我正在尝试使用activerecord进行简单的用户更新,但update()方法没有做任何事情。 update()返回“true”,总是“成功”,但DB记录没有改变。

控制器:

use app\models\Users;

.....

$userId = 1;
foreach ($array as $value) {
   $user = Users::findOne($userId);
   //$user->ramount = ($user->ramount + $value->ramunt);
   $user->ramount = 22;
   if ($user->update() !== false) {
     echo "update successful";
   } else {
     echo "update failed";
   }

   //$user = Users::findOne($userId);
   //$user->updateCounters(['ramount' => 22]);
 }

我简化了更新,因为没有用。 updateCounters()方法工作得很好,但我不想使用它。

模型

namespace app\models;

use yii\base\Model;

class Users extends \yii\db\ActiveRecord
{
    public $id;
    public $email;
    public $username;
    public $ramount;

    public function attributeLabels() {
        return [
            'id' => 'User ID',
            'username' => 'Your name',
            'email' => 'Your email address',
            'ramount' => 'Resources',
        ];
    }

    public static function tableName() {
        return 'users';
    }

    public function rules() {
        return [
            [['username'], 'string', 'max'=>60],
            [['email'], 'string', 'max'=>120],
            [['ramount'],'number','max'=>999999],
        ];
    }
}

apache日志中没有错误,yii运行时日志中没有错误。所有提示

2 个答案:

答案 0 :(得分:3)

您已在模型类中定义

class Users extends \yii\db\ActiveRecord
{
    public $id;
    public $email;
    public $username;
    public $ramount;
    ....
}

删除这些变量,因为它们会覆盖ActiveRecord处理的属性。

Yii Guide说:

  

注意:Active Record属性以关联名称命名   表格列以区分大小写的方式。 Yii自动定义一个   Active Record中的属性,用于关联表的每一列。   您不应重新声明任何属性

答案 1 :(得分:0)

对搜索记录进行排队并设置新值:

header("location: /your_page.php");

尝试使用$userId = 1; $user = Users::findOne($userId); $user->ramount = 22; 方法:

save()

PD:save方法的返回值是boolean(true或false)。