EntityMetadata.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\EntityManager;
  7. use Magento\Framework\App\ResourceConnection;
  8. use Magento\Framework\DB\Sequence\SequenceInterface;
  9. /**
  10. * Class EntityMetadata
  11. */
  12. class EntityMetadata implements EntityMetadataInterface
  13. {
  14. /**
  15. * @var ResourceConnection
  16. */
  17. protected $resourceConnection;
  18. /**
  19. * @var string
  20. */
  21. protected $entityTableName;
  22. /**
  23. * @var null|string
  24. */
  25. protected $connectionName;
  26. /**
  27. * @var SequenceInterface
  28. */
  29. protected $sequence;
  30. /**
  31. * @var string
  32. */
  33. protected $eavEntityType;
  34. /**
  35. * @var string
  36. */
  37. protected $identifierField;
  38. /**
  39. * @var string[]
  40. */
  41. protected $entityContext;
  42. /**
  43. * EntityMetadata constructor.
  44. *
  45. * @param ResourceConnection $resourceConnection
  46. * @param string $entityTableName
  47. * @param string $identifierField
  48. * @param SequenceInterface|null $sequence
  49. * @param null $eavEntityType
  50. * @param null $connectionName
  51. * @param array $entityContext
  52. */
  53. public function __construct(
  54. ResourceConnection $resourceConnection,
  55. $entityTableName,
  56. $identifierField,
  57. SequenceInterface $sequence = null,
  58. $eavEntityType = null,
  59. $connectionName = null,
  60. $entityContext = []
  61. ) {
  62. $this->resourceConnection = $resourceConnection;
  63. $this->entityTableName = $entityTableName;
  64. $this->eavEntityType = $eavEntityType;
  65. $this->connectionName = $connectionName;
  66. $this->identifierField = $identifierField;
  67. $this->sequence = $sequence;
  68. $this->entityContext = $entityContext;
  69. }
  70. /**
  71. * @return string
  72. */
  73. public function getIdentifierField()
  74. {
  75. return $this->identifierField;
  76. }
  77. /**
  78. * @return string
  79. */
  80. public function getLinkField()
  81. {
  82. $connection = $this->resourceConnection->getConnectionByName($this->getEntityConnectionName());
  83. $indexList = $connection->getIndexList($this->getEntityTable());
  84. return $indexList[$connection->getPrimaryKeyName($this->getEntityTable())]['COLUMNS_LIST'][0];
  85. }
  86. /**
  87. * @return \Magento\Framework\DB\Adapter\AdapterInterface
  88. * @deprecated 100.1.0
  89. */
  90. public function getEntityConnection()
  91. {
  92. return $this->resourceConnection->getConnectionByName($this->connectionName);
  93. }
  94. /**
  95. * @return string
  96. */
  97. public function getEntityTable()
  98. {
  99. return $this->resourceConnection->getTableName($this->entityTableName);
  100. }
  101. /**
  102. * @return string
  103. */
  104. public function getEntityConnectionName()
  105. {
  106. return $this->connectionName;
  107. }
  108. /**
  109. * @return null|string
  110. */
  111. public function generateIdentifier()
  112. {
  113. $nextIdentifier = null;
  114. if ($this->sequence) {
  115. $nextIdentifier = $this->sequence->getNextValue();
  116. }
  117. return $nextIdentifier;
  118. }
  119. /**
  120. * @return string[]
  121. */
  122. public function getEntityContext()
  123. {
  124. return $this->entityContext;
  125. }
  126. /**
  127. * @return null|string
  128. */
  129. public function getEavEntityType()
  130. {
  131. return $this->eavEntityType;
  132. }
  133. }