User preferences are a simple key => value mechanism, where the developer can
specify the key and value himself.
Note that values are stored internally as serialized PHP values to keep their type.
/** * Creates or updates a preference for a given user. * * @param User $user The user to set the preference for * @param string $key The key to set * @param string $value The value to set * * @return 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; }