We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 42074
    • 7 Posts
    Hi everyone,
    I' trying to dealing with modUserSetting in order to save a setting for existing user :

    $object = $modx->newObject('modUserSetting');
    $object->set('key', 'card_date_start');
    $object->set('value', 'teste');
    $object->set('xtype', 'textfield');
    $object->set('namespace', 'Carte Membre');
    $object->set('area', 'Carte Membre');
    $object->set('user', $user_id);
    $object->save()
    


    Ok the first time (create) but the second time i've got an error in logs

    Duplicate entry '17-card_date_start' for key 'PRIMARY'


    Is there any way to use something like in SQL : ON DUPLICATE KEY ?
    I've tried to use $user->addMany($object); but nothing appends, my settings are not updated !

    Any idea ?
    Thanks
      • 18373 ☆ A M B ☆
      • 3,141 Posts
      I'd do something like this:

      $object = $modx->getObject('modUserSetting', array('user' => $user_id));
      if (!$object) {
         $object = $modx->newObject('modUserSetting');
         $object->set('user', $user_id);
      }
      $object->set('key', 'card_date_start');
      $object->set('value', 'teste');
      $object->set('xtype', 'textfield');
      $object->set('namespace', 'Carte Membre');
      $object->set('area', 'Carte Membre');
      $object->save()
      
        Mark Hamstra • Developer spending his days working on Premium Extras and a MODX Site Dashboard with the ability to remotely upgrade MODX and extras to make the MODX world a little better.

        Tweet me @mark_hamstra, check my infrequent blog at markhamstra.com, my slightly more frequent ramblings at MODX.today or see code at Github.
        • 22303 MODX Staff
        • 10,725 Posts
        Lookup an existing setting record by user id and setting key first:
        $object = $modx->getObject('modUserSetting', array('user' => $user_id, 'key' => 'card_date_start'));
        if (!$object) {
            $object = $modx->newObject('modUserSetting');
            $object->set('user', $user_id);
            $object->set('key', 'card_date_start');
        }
        $object->set('value', 'teste');
        $object->set('xtype', 'textfield');
        $object->set('namespace', 'Carte Membre');
        $object->set('area', 'Carte Membre');
        $object->save()
          • 42074
          • 7 Posts
          Than you, it works