PartKeepr\AuthBundle\Services\UserPreferenceService::setPreference PHP Метод

setPreference() публичный Метод

Creates or updates a preference for a given user.
public setPreference ( User $user, string $key, string $value ) : UserPreference
$user PartKeepr\AuthBundle\Entity\User The user to set the preference for
$key string The key to set
$value string The value to set
Результат PartKeepr\AuthBundle\Entity\UserPreference 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;
    }

Usage Example

Пример #1
0
 /**
  * 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);
 }