Sequence.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\EntityManager\Sequence;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\DB\Sequence\SequenceInterface;
  9. /**
  10. * Class Sequence
  11. */
  12. class Sequence implements SequenceInterface
  13. {
  14. /**
  15. * @var string
  16. */
  17. protected $connectionName;
  18. /**
  19. * @var string
  20. */
  21. protected $sequenceTable;
  22. /**
  23. * @var \Magento\Framework\App\ResourceConnection
  24. */
  25. protected $resource;
  26. /**
  27. * @param ResourceConnection $resource
  28. * @param string $connectionName
  29. * @param string $sequenceTable
  30. */
  31. public function __construct(
  32. ResourceConnection $resource,
  33. $connectionName,
  34. $sequenceTable
  35. ) {
  36. $this->resource = $resource;
  37. $this->connectionName = $connectionName;
  38. $this->sequenceTable = $sequenceTable;
  39. }
  40. /**
  41. * @inheritdoc
  42. */
  43. public function getNextValue()
  44. {
  45. $this->resource->getConnection($this->connectionName)
  46. ->insert($this->resource->getTableName($this->sequenceTable), []);
  47. return $this->resource->getConnection($this->connectionName)
  48. ->lastInsertId($this->resource->getTableName($this->sequenceTable));
  49. }
  50. /**
  51. * @inheritdoc
  52. */
  53. public function getCurrentValue()
  54. {
  55. $select = $this->resource->getConnection($this->connectionName)->select();
  56. $select->from($this->resource->getTableName($this->sequenceTable));
  57. return $this->resource->getConnection($this->connectionName)->fetchRow($select);
  58. }
  59. }