protected function handle() { $request = $this->getRequest(); if ($request->getMethod() == 'POST') { $ids = $request->request->get('ids'); $session = $this->getSession(); $db = UserDatabase::getDb(); $db->transaction(); try { if (!$ids) { throw new \Exception('没有选择任何用户'); } $users = UserAuthModel::allUsers(function (QueryBuilder $qb) use($ids) { $qb->andWhere($qb->expr()->in('id', $ids)); }); if (!$users) { throw new \Exception('用户不存在'); } // 删除用户 foreach ($users as $user) { UserAuthModel::deleteAuth($user['id']); // 删除资料 UserProfileModel::deleteProfile($user['id']); // 删除元数据 $metadata = UserMetadataModel::allMetadata(function (QueryBuilder $qb) use($user) { $qb->andWhere($qb->expr()->eq('user_id', ':user_id'))->setParameter(':user_id', $user['id']); }); foreach ($metadata as $data) { UserMetadataModel::deleteMetadata($user['id'], $data['meta_key']); } } $db->commit(); $session->addFlash('success', '操作成功'); } catch (\Exception $e) { $db->rollback(); $session->addFlash('error', $e->getMessage()); } return new RedirectResponse($this->generateUrl('admin_user_index')); } else { $ids = $request->query->get('ids'); if (is_string($ids)) { $ids = json_decode($ids, true); } if (!$ids) { throw new \Exception('没有选择任何用户'); } $users = UserAuthModel::allUsers(function (QueryBuilder $qb) use($ids) { $qb->andWhere($qb->expr()->in('id', $ids)); }); if (!$users) { throw new \Exception('用户不存在'); } return $this->render('user/delete.html.twig', array('users' => $users)); } }
/** * 保存 * @param UserMetadataModel $metadata * @return UserMetadataModel * @throws \Exception */ public static function saveMetadata(UserMetadataModel $metadata) { return self::editMetadata($metadata->toArray()); }