/**
  * Return singleton for a given family
  *
  * @param FamilyInterface $family
  *
  * @throws \LogicException
  * @throws \Doctrine\ORM\NonUniqueResultException
  *
  * @return DataInterface
  */
 public function getInstance(FamilyInterface $family)
 {
     if (!$family->isSingleton()) {
         throw new \LogicException("Family {$family->getCode()} is not a singleton");
     }
     $qb = $this->createQueryBuilder('d')->andWhere('d.family = :familyCode')->addSelect('values')->join('d.values', 'values')->setParameters(['familyCode' => $family->getCode()]);
     $instance = $qb->getQuery()->getOneOrNullResult();
     if (!$instance) {
         $dataClass = $family->getDataClass();
         $instance = new $dataClass($family);
     }
     return $instance;
 }