Joomla 3.xデータベースからIDでユーザーのセットを削除したいと思います。各データベーステーブルに独自のSQLを記述する必要なく、これが可能かどうかをドキュメントから把握しようとしています。
次の擬似コードのようなもの:
delete from #_users where ( `lastvisitDate` < NOW() - INTERVAL 1 MONTH ) AND ( #__user_usergroup_map.group_id = 18 );
delete from #_user_usergroup_map where user_id not in (select id from #_users);
delete from #_user_profiles where user_id not in (select id from #_users);
私はクエリビルダーに精通しています: https://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase/en
しかし、フレームワークにユーザーの詳細を削除するコードがすでにある場合は、ホイールを再発明しないことが私の好みです。
ドキュメントにはこれがあります: https://api.joomla.org/cms-3/classes/Joomla.CMS.User.User.html しかし、パラメーターがuser-> deleteに渡されていないようです?
管理者のバックエンドユーザーリストのボックスにチェックを入れ、複数のユーザーを削除することができるため、これは可能だと思います。
私はJoomlaで数年(1.5以降)作業してきましたが、APIドキュメントに常に苦労してきました。
どんな助けでも大歓迎です。
ドキュメントにはこれがあります: https://api.joomla.org/cms-3/classes/Joomla.CMS.User.User.html しかし、パラメーターがuser-> deleteに渡されていないようです?
そのとおりです。このメソッドはユーザーインスタンスで機能します。
use Joomla\CMS\User\User;
// Get user with ID 1.
$userId = 1;
$user = User::getInstance($userId);
// Delete the user.
if (!$user->delete())
{
// Error occurred.
}
else
{
// User with ID 1 deleted.
}
このメソッドを使用すると、onUserBeforeDelete
およびonUserAfterDelete
イベントがトリガーされるため、プラグインは関連するユーザーデータを削除できます。