OrderIncrementIdChecker.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Sales\Model;
  8. /**
  9. * This class uses for checking if reserved order id was already used for some order.
  10. */
  11. class OrderIncrementIdChecker
  12. {
  13. /**
  14. * @var ResourceModel\Order
  15. */
  16. private $resourceModel;
  17. /**
  18. * @param ResourceModel\Order $resourceModel
  19. */
  20. public function __construct(ResourceModel\Order $resourceModel)
  21. {
  22. $this->resourceModel = $resourceModel;
  23. }
  24. /**
  25. * Check if order increment ID is already used.
  26. *
  27. * Method can be used to avoid collisions of order IDs.
  28. *
  29. * @param string|int $orderIncrementId
  30. * @return bool
  31. */
  32. public function isIncrementIdUsed($orderIncrementId): bool
  33. {
  34. /** @var \Magento\Framework\DB\Adapter\AdapterInterface $adapter */
  35. $adapter = $this->resourceModel->getConnection();
  36. $bind = [':increment_id' => $orderIncrementId];
  37. /** @var \Magento\Framework\DB\Select $select */
  38. $select = $adapter->select();
  39. $select->from($this->resourceModel->getMainTable(), $this->resourceModel->getIdFieldName())
  40. ->where('increment_id = :increment_id');
  41. $entity_id = $adapter->fetchOne($select, $bind);
  42. if ($entity_id > 0) {
  43. return true;
  44. }
  45. return false;
  46. }
  47. }