19 private $categoriesPerWebsite;
24 private $fixtureConfig;
29 private $resourceConnection;
54 $this->fixtureConfig = $fixtureConfig;
67 if ($this->isAssignToAllWebsites()) {
68 return $this->getAllWebsites();
70 $categoriesPerWebsite = $this->getCategoriesAndWebsites();
71 if (!count($categoriesPerWebsite)) {
72 throw new \Exception(
'Cannot find categories. Please, be sure that you have generated categories');
74 return [$categoriesPerWebsite[$productIndex % count($categoriesPerWebsite)][
'website']];
86 if ($this->isAssignToAllWebsites()) {
87 $categories = $this->getAllCategories();
88 return $categories[$productIndex % count($categories)];
90 $categoriesPerWebsite = $this->getCategoriesAndWebsites();
91 return $categoriesPerWebsite[$productIndex % count($categoriesPerWebsite)][
'category'];
98 private function getCategoriesAndWebsites()
100 if (
null === $this->categoriesPerWebsite) {
101 $select = $this->getConnection()->select()
103 [
'c' => $this->resourceConnection->getTableName(
'catalog_category_entity')],
104 [
'category' =>
'entity_id']
106 [
'sg' => $this->resourceConnection->getTableName(
'store_group')],
107 "c.path like concat('1/', sg.root_category_id, '/%')",
108 [
'website' =>
'website_id']
110 $this->categoriesPerWebsite = $this->getConnection()->fetchAll(
$select);
113 return $this->categoriesPerWebsite;
119 private function isAssignToAllWebsites()
121 return (
bool)$this->fixtureConfig->getValue(
'assign_entities_to_all_websites',
false);
127 private function getAllWebsites()
129 if (
null === $this->websites) {
130 $this->websites = array_unique(array_column($this->getCategoriesAndWebsites(),
'website'));
133 return $this->websites;
139 private function getAllCategories()
141 if (
null === $this->categories) {
142 $this->categories = array_values(array_unique(array_column($this->getCategoriesAndWebsites(),
'category')));
145 return $this->categories;
151 private function getConnection()
153 if (
null === $this->connection) {
154 $this->connection = $this->resourceConnection->getConnection();
157 return $this->connection;
getCategoryId($productIndex)
getWebsiteIds($productIndex)
__construct(FixtureConfig $fixtureConfig, ResourceConnection $resourceConnection)