PartKeepr\SystemPreferenceBundle\Service\SystemPreferenceService::setSystemPreference PHP Метод

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

Creates or updates a preference for a given user.
public setSystemPreference ( string $key, string $value ) : SystemPreference
$key string The key to set
$value string The value to set
Результат PartKeepr\SystemPreferenceBundle\Entity\SystemPreference The user preference
    public function setSystemPreference($key, $value)
    {
        $dql = 'SELECT sp FROM PartKeepr\\SystemPreferenceBundle\\Entity\\SystemPreference sp WHERE sp.preferenceKey = :key';
        $query = $this->entityManager->createQuery($dql);
        $query->setParameter('key', $key);
        try {
            $systemPreference = $query->getSingleResult();
        } catch (\Exception $e) {
            $systemPreference = new SystemPreference();
            $systemPreference->setPreferenceKey($key);
            $this->entityManager->persist($systemPreference);
        }
        $systemPreference->setPreferenceValue($value);
        $this->entityManager->flush();
        return $systemPreference;
    }

Usage Example

Пример #1
0
 /**
  * Retrieves a collection of resources.
  *
  * @param Request $request
  *
  * @throws \Exception                                 If the format is invalid
  * @throws RuntimeException|RootNodeNotFoundException
  *
  * @return JsonResponse
  */
 public function __invoke(Request $request)
 {
     $data = json_decode($request->getContent());
     if (property_exists($data, 'preferenceKey') && property_exists($data, 'preferenceValue')) {
         $preference = $this->systemPreferenceService->setSystemPreference($data->preferenceKey, $data->preferenceValue);
     } else {
         throw new \Exception('Invalid format');
     }
     /**
      * @var ResourceInterface $resourceType
      */
     list($resourceType) = $this->extractAttributes($request);
     $serializedData = $this->serializer->normalize($preference, 'json', $resourceType->getNormalizationContext());
     return new JsonResponse($serializedData);
 }