web-dev-qa-db-ja.com

JModelでデータを保存した後に新しいレコードIDを取得するにはどうすればよいですか?

コンポーネントをインストールするための新しいユーザーグループを作成する必要があり、以下のコードsaves期待どおりにデータを保存します。ただし、後で使用するためにユーザーグループのIDを取得すると、「機能しません」。

JTableを使用するとIDが返されますが、プラグインは起動されません-モデルが追加したレコードのIDを取得する際に、ここに明らかなものがありませんか?

$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

保存後、コントローラーがモデルデータにアクセスできるようにするpostSaveHookメソッドを使用してみてください。

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

これは古い記事ですが。私に役立つ解決策の1つを投稿したいと思いました。

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