web-dev-qa-db-fra.com

Comment puis-je obtenir le nouvel ID d'enregistrement après avoir sauvegardé des données avec JModel?

Nous devons créer un nouveau groupe d'utilisateurs pour l'installation de notre composant et le code ci-dessous enregistre les données exactement comme prévu. Toutefois, l'extraction de l'ID du groupe d'utilisateurs pour une utilisation ultérieure "ne fonctionne pas".

L'utilisation de JTable renvoie l'identifiant, mais aucun plugin ne sera déclenché - il me manque quelque chose d'évident dans la récupération de l'identifiant de l'enregistrement que le modèle vient d'ajouter?

$model = new UsersModelGroup(array('table_path' => $basePath.'/tables'));
$data = array('parent_id' => '2','title'=>'My Usergroup');
if(!$model->save($data)){
    $msg = 'Usergroup was not saved: '.$model->getError();
}else{
    $my_new_group_id = $model->get('id');    // Returns "null"
}
5
GDP

Essayez d’utiliser la méthode postSaveHook qui permet au contrôleur d’accéder aux données du modèle après leur enregistrement.

public function postSaveHook($model, $validData)
{
    $item = $model->getItem();
    $my_new_group_id = $item->get('id');
}
4
Lodder

Même s'il s'agit d'un ancien post. Je voulais poster l'une des solutions qui m'a aidé.

JLoader::import('group', JPATH_ADMINISTRATOR.'/components/com_users/models');
$groupModel = JModelLegacy::getInstance( 'Group', 'UsersModel' );
$groupModel->save($group);
$groupId = $groupModel->getState('group.id');
1
Irfan