我是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运行时日志中没有错误。所有提示
答案 0 :(得分:3)
您已在模型类中定义
class Users extends \yii\db\ActiveRecord
{
public $id;
public $email;
public $username;
public $ramount;
....
}
删除这些变量,因为它们会覆盖ActiveRecord处理的属性。
注意: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)。