PartKeepr\PartBundle\Services\PartService::isInternalPartNumberUnique PHP Метод

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

Checks if the given internal part number is unique
public isInternalPartNumberUnique ( string $internalPartNumber, Part $part = null ) : boolean
$internalPartNumber string The internal part number to checkl
$part PartKeepr\PartBundle\Entity\Part An optional part to exclude within the check
Результат boolean
    public function isInternalPartNumberUnique($internalPartNumber, Part $part = null)
    {
        if (!$this->checkInternalPartNumberUniqueness) {
            return true;
        }
        /**
         * Empty internal part numbers aren't checked. If you want to require an internal part number, set the
         * field internalPartNumber to mandatory.
         */
        if ($internalPartNumber == "") {
            return true;
        }
        $dql = 'SELECT COUNT(p) FROM PartKeepr\\PartBundle\\Entity\\Part p WHERE p.internalPartNumber = :internalPartNumber';
        if ($part !== null) {
            $dql .= " AND p.id != :partId";
        }
        $query = $this->entityManager->createQuery($dql)->setParameter('internalPartNumber', $internalPartNumber);
        if ($part !== null) {
            $query->setParameter('partId', $part->getId());
        }
        return $query->getSingleScalarResult() == 0 ? true : false;
    }

Usage Example

Пример #1
0
 /**
  * Create a new item.
  *
  * @param Request    $request
  * @param string|int $id
  *
  * @throws NotFoundHttpException
  * @throws RuntimeException
  * @throws UserProtectedException
  * @throws UserLimitReachedException
  *
  * @return mixed
  */
 public function __invoke(Request $request, $id)
 {
     /**
      * @var $resourceType ResourceInterface
      */
     list($resourceType, $format) = $this->extractAttributes($request);
     /*
      * Workaround to ensure stockLevels are not overwritten in a PUT request.
      * @see https://github.com/partkeepr/PartKeepr/issues/551
      */
     $data = json_decode($request->getContent(), true);
     if (array_key_exists('stockLevels', $data)) {
         unset($data['stockLevels']);
     }
     $requestData = json_encode($data);
     $data = $this->getItem($this->dataProvider, $resourceType, $id);
     $context = $resourceType->getDenormalizationContext();
     $context['object_to_populate'] = $data;
     /**
      * @var $part Part
      */
     $part = $this->serializer->deserialize($requestData, $resourceType->getEntityClass(), $format, $context);
     if (!$this->partService->isInternalPartNumberUnique($part->getInternalPartNumber(), $part)) {
         throw new InternalPartNumberNotUniqueException();
     }
     return $part;
 }
All Usage Examples Of PartKeepr\PartBundle\Services\PartService::isInternalPartNumberUnique