em->find(Customer::class, $id); } public function findByPlatformId(string $platform, string $platformUserId): ?Customer { return $this->em->getRepository(Customer::class) ->createQueryBuilder('c') ->where("JSON_UNQUOTE(JSON_EXTRACT(c.platformIds, :path)) = :id") ->setParameter('path', '$."'.$platform.'"') ->setParameter('id', $platformUserId) ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } public function findByMatchingKey(string $matchingKey): ?Customer { $customers = $this->em->getRepository(Customer::class)->findAll(); foreach ($customers as $customer) { if ($customer->getMatchingKey() === $matchingKey) { return $customer; } } return null; } public function save(Customer $customer): void { $this->em->persist($customer); $this->em->flush(); } }