/** * Check if DB is up to date * * @return bool */ private function isDbUpToDate() { foreach (array_keys($this->moduleList->getModules()) as $moduleName) { foreach ($this->resourceResolver->getResourceList($moduleName) as $resourceName) { $isSchemaUpToDate = $this->moduleManager->isDbSchemaUpToDate($moduleName, $resourceName); $isDataUpToDate = $this->moduleManager->isDbDataUpToDate($moduleName, $resourceName); if (!$isSchemaUpToDate || !$isDataUpToDate) { return false; } } } return true; }
/** * Apply database scheme updates whenever needed * * @return void */ public function updateScheme() { \Magento\Framework\Profiler::start('apply_db_schema_updates'); $this->_appState->setUpdateMode(true); $afterApplyUpdates = array(); foreach (array_keys($this->_moduleList->getModules()) as $moduleName) { foreach ($this->_resourceResolver->getResourceList($moduleName) as $resourceName) { if (!$this->_moduleManager->isDbSchemaUpToDate($moduleName, $resourceName)) { $setup = $this->_setupFactory->create($resourceName, $moduleName); $setup->applyUpdates(); if ($setup->getCallAfterApplyAllUpdates()) { $afterApplyUpdates[] = $setup; } } } } /** @var $setup \Magento\Framework\Module\Updater\SetupInterface*/ foreach ($afterApplyUpdates as $setup) { $setup->afterApplyAllUpdates(); } $this->_appState->setUpdateMode(false); $this->_isUpdatedSchema = true; \Magento\Framework\Profiler::stop('apply_db_schema_updates'); }