14 use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory;
15 use Psr\Log\LoggerInterface;
63 $this->connection =
$resource->getConnection();
66 ->get(LoggerInterface::class);
79 $select = $this->connection->select();
80 $select->from($this->resource->getTableName(self::TABLE_NAME));
83 $select->where($this->connection->quoteIdentifier($column) .
' IN (?)',
$value);
94 return $this->connection->fetchAll($this->
prepareSelect($data));
110 rtrim($requestPath,
'/'),
111 rtrim($requestPath,
'/') .
'/',
114 $resultsFromDb = $this->connection->fetchAll($this->
prepareSelect($data));
116 if (count($resultsFromDb) === 1) {
117 $resultFromDb = current($resultsFromDb);
125 $result = $canReturnResultFromDb ? $resultFromDb : [
138 foreach ($resultsFromDb as $resultFromDb) {
149 return $this->connection->fetchRow($this->
prepareSelect($data));
158 private function deleteOldUrls(array
$urls): void
160 $oldUrlsSelect = $this->connection->select();
161 $oldUrlsSelect->from(
162 $this->resource->getTableName(self::TABLE_NAME)
166 $oldUrlsSelect->orWhere(
167 $this->connection->quoteIdentifier(
170 $url->getEntityType()
172 $oldUrlsSelect->where(
173 $this->connection->quoteIdentifier(
178 $oldUrlsSelect->where(
179 $this->connection->quoteIdentifier(
187 $checkOldUrlsSelect = clone $oldUrlsSelect;
189 $checkOldUrlsSelect->columns(
'count(*)');
190 $hasOldUrls = (bool)$this->connection->fetchOne($checkOldUrlsSelect);
193 $this->connection->query(
194 $oldUrlsSelect->deleteFromSelect(
195 $this->resource->getTableName(self::TABLE_NAME)
206 $this->deleteOldUrls(
$urls);
214 }
catch (\
Magento\Framework\Exception\AlreadyExistsException $e) {
228 if ($urlConflicted) {
229 throw new \Magento\UrlRewrite\Model\Exception\UrlAlreadyExistsException(
230 __(
'URL key for specified store already exists.'),
236 throw $e->getPrevious() ?: $e;
254 $this->connection->insertMultiple($this->resource->getTableName(self::TABLE_NAME),
$data);
255 }
catch (\Exception $e) {
257 && preg_match(
'#SQLSTATE\[23000\]: [^:]+: 1062[^\d]#', $e->getMessage())
259 throw new \Magento\Framework\Exception\AlreadyExistsException(
260 __(
'URL key for specified store already exists.'),
281 $fieldValue =
$url->getByKey($key);
296 $this->connection->query(
297 $this->
prepareSelect($data)->deleteFromSelect($this->resource->getTableName(self::TABLE_NAME))
deleteByData(array $data)
prepareSelect(array $data)
const ERROR_CODE_DUPLICATE_ENTRY
doFindAllByData(array $data)
doFindOneByData(array $data)
createFilterDataBasedOnUrls($urls)
__construct(UrlRewriteFactory $urlRewriteFactory, DataObjectHelper $dataObjectHelper, ResourceConnection $resource, LoggerInterface $logger=null)