public setPreference ( |
||
$user | The user to set the preference for | |
$key | string | The key to set |
$value | string | The value to set |
리턴 | The user preference |
public function setPreference(User $user, $key, $value)
{
$dql = 'SELECT up FROM PartKeepr\\AuthBundle\\Entity\\UserPreference up WHERE up.user = :user AND ';
$dql .= 'up.preferenceKey = :key';
$query = $this->entityManager->createQuery($dql);
$query->setParameter('user', $user);
$query->setParameter('key', $key);
try {
$userPreference = $query->getSingleResult();
} catch (\Exception $e) {
$userPreference = new UserPreference();
$userPreference->setUser($user);
$userPreference->setPreferenceKey($key);
$this->entityManager->persist($userPreference);
}
$userPreference->setPreferenceValue($value);
$this->entityManager->flush();
return $userPreference;
}
/** * Retrieves a collection of resources. * * @param Request $request * * @return array|\Dunglas\ApiBundle\Model\PaginatorInterface|\Traversable * @throws \Exception If the format is invalid * * @throws RuntimeException|RootNodeNotFoundException */ public function __invoke(Request $request) { $user = $this->userService->getUser(); $data = json_decode($request->getContent()); if (property_exists($data, "preferenceKey") && property_exists($data, "preferenceValue")) { $preference = $this->userPreferenceService->setPreference($user, $data->preferenceKey, $data->preferenceValue); } else { throw new \Exception("Invalid format"); } list($resourceType) = $this->extractAttributes($request); /** * @var ResourceInterface $resourceType */ $serializedData = $this->serializer->normalize($preference, 'json', $resourceType->getNormalizationContext()); return new JsonResponse($serializedData); }