Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
CreateRow.php
Go to the documentation of this file.
1 <?php
8 
13 
17 class CreateRow
18 {
22  private $metadataPool;
23 
27  private $resourceConnection;
28 
35  public function __construct(
36  MetadataPool $metadataPool,
37  ResourceConnection $resourceConnection
38  ) {
39  $this->metadataPool = $metadataPool;
40  $this->resourceConnection = $resourceConnection;
41  }
42 
50  {
51  $output = [];
52  foreach ($connection->describeTable($metadata->getEntityTable()) as $column) {
53  $columnName = strtolower($column['COLUMN_NAME']);
54  if ($this->canNotSetTimeStamp($columnName, $column, $data)) {
55  continue;
56  }
57 
58  if (isset($data[$columnName])) {
59  $output[strtolower($column['COLUMN_NAME'])] = $data[strtolower($column['COLUMN_NAME'])];
60  } elseif ($column['DEFAULT'] === null) {
61  $output[strtolower($column['COLUMN_NAME'])] = null;
62  }
63  }
64  if (empty($data[$metadata->getIdentifierField()])) {
65  $output[$metadata->getIdentifierField()] = $metadata->generateIdentifier();
66  }
67  return $output;
68  }
69 
76  private function canNotSetTimeStamp($columnName, $column, array $data)
77  {
78  return $column['DEFAULT'] == 'CURRENT_TIMESTAMP' && !isset($data[$columnName])
79  && empty($column['NULLABLE']);
80  }
81 
87  public function execute($entityType, $data)
88  {
89  $metadata = $this->metadataPool->getMetadata($entityType);
90  $linkField = $metadata->getLinkField();
91  $entityTable = $metadata->getEntityTable();
92  $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName());
93  $connection->insert($entityTable, $this->prepareData($metadata, $connection, $data));
94 
95  if (!isset($data[$linkField]) || !$data[$linkField]) {
96  $data[$linkField] = $connection->lastInsertId($entityTable);
97  }
98 
99  return $data;
100  }
101 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
prepareData(EntityMetadataInterface $metadata, AdapterInterface $connection, $data)
Definition: CreateRow.php:49
__construct(MetadataPool $metadataPool, ResourceConnection $resourceConnection)
Definition: CreateRow.php:35
$connection
Definition: bulk.php:13
$entityTable
Definition: tablerates.php:11