drupal user_save()函数不会更新现有用户,但会创建一个新用户

时间:2018-04-04 12:17:22

标签: php drupal-7 save updates

user_save函数不会更新我的用户但会抛出异常: SQLSTATE [23000]:完整性约束违规:1062重复条目''关键字'名称' 因为它假设我需要创建一个新的用户对象,并且它与另一个具有相同的名称。 我的代码如下:

// load user object
$account = user_load($user->uid);

// update some user property
$saved = $account->selected_keyword;
if(isset($saved))
    array_push($termIds,$saved);
$account->selected_keyword = $termIds;

// save existing user
try {
    user_save((object) array('uid' => $account->uid), (array) $account);
}catch(Exception $e){
    print_r($e);exit;
}

所以我该如何解决?

2 个答案:

答案 0 :(得分:1)

我理解我的问题是userId,我通过drupal_anonymous_user()函数获取了用户ID,因此user_save正在创建新用户,而我错误地需要使用全局{ {1}}

此外,我需要通过字段模块的$user;函数创建新字段。

答案 1 :(得分:0)

user_save()需要$account作为第一个参数,而不是第二个参数。您应该为编辑创建一个数组:

$account = user_load($user->uid);

$edit = array(
  'field_some_custom_field' => array(
    'und' => array(
      0 => array(
        'value' => $new_value,
      ),
    ),
  ),
);

user_save($account, $edit);

您应该适应selected_keyword属性的案例。